📅  最后修改于: 2023-12-03 15:31:34.367000             🧑  作者: Mango
在 Java 中,可以通过以下代码获取正在运行的 Jar 文件的位置:
String jarFilePath = new File(getClass().getProtectionDomain().getCodeSource().getLocation().toURI().getPath()).getAbsolutePath();
以上代码将返回一个字符串,包含正在运行的 Jar 文件的绝对路径。
如果想要获取扩展类路径中的 Jar 文件,可以使用以下代码:
String extDirPath = System.getProperty("java.ext.dirs");
String[] extDirs = extDirPath.split(File.pathSeparator);
String jarFilePath = null;
for (String extDir : extDirs) {
File extDirFile = new File(extDir);
if (extDirFile.isDirectory()) {
File[] files = extDirFile.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".jar");
}
});
if (files != null) {
for (File file : files) {
if (file.isFile()) {
jarFilePath = file.getAbsolutePath();
break;
}
}
}
}
if (jarFilePath != null) {
break;
}
}
以上代码将返回一个字符串,包含扩展类路径中的 Jar 文件的绝对路径。
需要注意的是,在某些情况下,以上两个代码片段可能无法正确获取 Jar 文件的位置,例如在使用一些特定的类加载器时。因此,在使用时需要谨慎判断。