有很多文件夹可以让您找到正在运行的 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);
Run Code Online (Sandbox Code Playgroud)
谢谢大家!编辑:另外,如果我最终在类路径中有多个 jar,我需要一些东西来检查我是否得到了正确的一个。