类路径中的 Jar
Jar in the classpath
是否有编程方式获取类路径中所有 jar 的完整列表?
我需要它,因为我们在两个平台之间存在行为差异。
一个由我们管理,但另一个不是,我需要知道是否有
或者不是同一个罐子。
取决于你所说的类路径到底是什么意思,实际上有不同种类的类路径:
引导类路径
System.getProperty("sun.boot.class.path")
扩展类路径
System.getProperty("java.ext.dirs")
用户定义的类路径
System.getProperty("java.class.path")
适用于标准 Java SE 应用程序。对于模块化和 Java SE,它更复杂。
Is there a programmatically way to get the complete list of all jar in
the 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());
如果有用的话,你也可以get a list of all classes loaded in the JVM。
是否有编程方式获取类路径中所有 jar 的完整列表?
我需要它,因为我们在两个平台之间存在行为差异。
一个由我们管理,但另一个不是,我需要知道是否有
或者不是同一个罐子。
取决于你所说的类路径到底是什么意思,实际上有不同种类的类路径:
引导类路径
System.getProperty("sun.boot.class.path")
扩展类路径
System.getProperty("java.ext.dirs")
用户定义的类路径
System.getProperty("java.class.path")
适用于标准 Java SE 应用程序。对于模块化和 Java SE,它更复杂。
Is there a programmatically way to get the complete list of all jar in the 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());
如果有用的话,你也可以get a list of all classes loaded in the JVM。