繁体   English   中英

如何获取当前正在运行的jar的路径和名称?

[英]How to get the path and name of the current running jar?

有很多文件夹可以让您找到正在运行的jar所在的文件夹,但是如何获取正在运行的jar? 例如,如果foo.jar位于C:/FOO/foo.jar中,那么我将如何获取路径C:/FOO/foo.jar,而不是C:/ FOO。 另外,我也不知道A:如果将jar移到了另一个文件夹,B:如果我的jar被重命名,C:如果与我的文件夹在同一文件夹中还有其他jar。 我想获取当前正在运行的jar的File对象,然后使用(以某种方式)用我程序的新版本替换该jar。 谁能帮我这个? 谢谢! 编辑:等一下,找到目录后,可以通过它扫描查找jar文件,并在每个jar文件中检查我jar中的某个类/其他文件吗?

好吧,我明白了。 就像这样:

File dir = new File(YourMainClass.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
String jar = System.getProperty("java.class.path");
File jarFile = new File(dir, jar);

感谢大家! 编辑:此外,如果我最终在类路径中遇到多个jar,我将需要一些检查以确保我得到了正确的jar。

为了得到罐子的道路,使用:

File dir = new File(YourMainClass.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());

要获取主类名称,请使用:

StackTraceElement[] stack = Thread.currentThread().getStackTrace();
StackTraceElement main = stack[stack.length - 1];
String mainClass = main.getClassName();

然后,一起使用它们:

File f = new File(dir, mainClass);

您可以使用查找文件JAVA API。

您想要的是File.listFiles(FileNameFilter filter)。

这将为您提供所需目录中与某个过滤器匹配的文件列表。

该代码看起来类似于

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM