查找 Jar 文件的自身位置

发布于 2025-01-07 22:14:15 字数 581 浏览 1 评论 0原文

有什么方法可以通过编程方式找到 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 内。

Is there any way by which we can find the current location from where the jar is forked, programmatically? Say I am executing a Jar from D:/Jars/myjar.jar, so can I get that path from the code?


@AljoshaBre I tried this

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

        e1.printStackTrace();
    } 

Is throwing NPE. :(

But

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

is showing client.jar only. Not the absolute path. It is inside a Jar.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

最美的太阳 2025-01-14 22:14:15

有一个办法:

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

There is a way:

return new File(ClassA.class.getProtectionDomain().getCodeSource().getLocation().toURI().g‌​etPath());
唠甜嗑 2025-01-14 22:14:15

如果你以 java -jar D:/Jars/myjar.jar 的形式执行它,它将

new File("afile").getAbsolutePath();

返回 D:/Jars/afile 并且你可以只做一个子字符串。

新文件从 jar 所在的文件夹创建文件,因此如果您在应用程序中导入此 JAR,则此方法不起作用。

抱歉,我刚刚尝试过......这不是真的:P 它返回您调用“java”命令的路径

If you execute it as java -jar D:/Jars/myjar.jar if you do

new File("afile").getAbsolutePath();

it will return D:/Jars/afile and the you can just do a substring.

The new File create the file from the folder which the jar is, so if you import this JAR in an application this method doesn't work.

Sorry I've just tried...it isn't true :P it return the path of where you called the 'java' command

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文