查找Jar文件的自我位置

时间:2012-02-22 17:01:13

标签: java path jar

我们有什么方法可以通过编程方式找到jar分叉的当前位置?假设我正在从D:/Jars/myjar.jar执行Jar,那么我可以从代码中获取该路径吗?


@AljoshaBre我试过这个

try {
        File file = new File(getClass().getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
        System.out.println(file.getAbsolutePath());
    } catch (Exception e1) {

        e1.printStackTrace();
    } 

投掷NPE。 :(

但是

System.out.println(getClass().getProtectionDomain().getCodeSource().getLocation().getPath());

仅显示client.jar。不是绝对的道路。它在Jar里面。

2 个答案:

答案 0 :(得分:7)

有一种方法:

return new File(ClassA.class.getProtectionDomain().getCodeSource().getLocation().toURI().g‌​etPath());

答案 1 :(得分:-4)

如果您执行

,请执行java -jar D:/Jars/myjar.jar
new File("afile").getAbsolutePath();

它将返回 D:/ Jars / afile ,你可以只做一个子串。

新文件从jar文件夹创建文件,因此如果您在应用程序中导入此JAR,则此方法无效。

对不起,我刚试过......这不是真的:它会回到你所谓的“java”的路径。命令