是否有一种以编程方式获取类路径中所有jar的完整列表?
我需要这个,因为我们在两个平台之间存在行为差异 一个由我们管理,但另一个不是,我需要知道是否存在 或者不是同一个罐子。
答案 0 :(得分:4)
取决于classpath的确切含义,实际上不同类路径:
引导类路径
System.getProperty("sun.boot.class.path")
扩展类路径
System.getProperty("java.ext.dirs")
用户定义的类路径
System.getProperty("java.class.path")
适用于标准Java SE应用程序。对于模块化和Java SE,它更复杂。
答案 1 :(得分:3)
是否有一种以编程方式获取所有jar的完整列表的方法 classpath?
这是print out the current project classpath的一种方式:
ClassLoader cl = ClassLoader.getSystemClassLoader();
java.net.URL[] urls = ((java.net.URLClassLoader)cl).getURLs();
for (java.net.URL url: urls) {
System.out.println(url.getFile());
}
如果您需要determine which jar a class is loaded from:
Class klass = ClassInTrouble.class;
CodeSource source = klass.getProtectionDomain().getCodeSource();
System.out.println(source == null ? klass : source.getLocation());