查找 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 内。
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
有一个办法:
There is a way:
如果你以
java -jar D:/Jars/myjar.jar
的形式执行它,它将返回 D:/Jars/afile 并且你可以只做一个子字符串。
新文件从 jar 所在的文件夹创建文件,因此如果您在应用程序中导入此 JAR,则此方法不起作用。
抱歉,我刚刚尝试过......这不是真的:P 它返回您调用“java”命令的路径
If you execute it as
java -jar D:/Jars/myjar.jar
if you doit 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