如何获取执行jar的绝对路径?

时间:2015-09-16 13:53:49

标签: java maven jar

如何获取已执行jar的位置?我找到了很多解决方案,但它们都不适合我。当我在我的IDE中运行它们一切都很好。只要我构建一个jar文件并使用java -jar myapp.jar运行它,输出就像/.../myapp.jar!/foo/bar

我将在myapp.jar中运行代码 - 而不是在任何库中。

jar的位置:/home/me/dev/myapp/myapp.jar
预期输出:/home/me/dev/myapp/

我不想要像System.getProperty("user.dir");

那样的工作目录

为什么我要这样做:

我想在实际jar旁边存储和加载文件。像

/home/me/bin/myapp/myapp.jar
/home/me/bin/myapp/license.key

我想避免将文件存储到像System.getProperty("user.home");这样的通用文件夹中。而且我不想将文件存储在jar文件中。

2 个答案:

答案 0 :(得分:0)

java.nio.file.Paths.get(".").toAbsolutePath()将返回当前目录的绝对路径。

答案 1 :(得分:0)

我在这些方面使用了一些东西:

[YourClass] .class.getProtectionDomain()。getCodeSource()。的getLocation()。的getPath()

此致