【发布时间】:2012-03-13 01:15:12
【问题描述】:
有什么方法可以让我们以编程方式找到分叉 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 文件中,所以它正在抛出 NPE?
-
谢谢@yegor256,但我不是统一测试。我正在执行 jar 本身。
-
您需要将调用序列 (
getClass().getProtectionDomain()...) 拆分为多行,以便知道究竟返回了什么null而不是预期的实例。 -
@TapasBose 你是如何解决 NPE 的?