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

时间:2015-01-28 12:25:00

标签: java 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中的某个类/其他文件?

3 个答案:

答案 0 :(得分:3)

好吧,我明白了。它是这样的:

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

谢谢大家! 编辑:另外,如果我在类路径中最终得到多个罐子,我需要检查一下我是否有合适的罐子。

答案 1 :(得分:0)

为了获得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);

答案 2 :(得分:-1)

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

你想要的是File.listFiles(FileNameFilter过滤器)。

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

代码看起来类似于