【发布时间】:2015-09-16 13:53:48
【问题描述】:
如何获取已执行 jar 的位置?我找到了很多解决方案,但没有一个对我有用。当我在我的 IDE 中运行它们时,一切都很好。一旦我构建了一个 jar 文件并使用java -jar myapp.jar 运行它,输出就像/.../myapp.jar!/foo/bar
我将在 myapp.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 文件中。
【问题讨论】:
-
@flafoux 这些解决方案都没有达到我的预期输出。
-
这里最重要的问题是:为什么需要这些信息?通常,不需要知道任何 JAR 文件的位置。其实这个问题好像是XY problem。
-
@Seelenvirtuose 更新了我的问题
-
@Brettetete:您是否将所需的库打包到可执行 jar 中?