📜  java 获取 jar 文件的位置 - Java (1)

📅  最后修改于: 2023-12-03 15:31:34.367000             🧑  作者: Mango

Java 获取 Jar 文件的位置

在 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 文件的位置,例如在使用一些特定的类加载器时。因此,在使用时需要谨慎判断。