[英]Jar in the classpath
是否有一種以編程方式獲取類路徑中所有jar的完整列表?
我需要這個,因為我們在兩個平台之間存在行為差異。
一個由我們管理,但另一個不是,我需要知道是否有相同的罐子。
取決於classpath的確切含義,實際上有不同類的類路徑 :
引導類路徑
System.getProperty("sun.boot.class.path")
擴展類路徑
System.getProperty("java.ext.dirs")
用戶定義的Classpath
System.getProperty("java.class.path")
適用於標准Java SE應用程序。 對於模塊化和Java SE,它更復雜。
是否有一種以編程方式獲取類路徑中所有jar的完整列表?
這是打印出當前項目類路徑的一種方法:
ClassLoader cl = ClassLoader.getSystemClassLoader();
java.net.URL[] urls = ((java.net.URLClassLoader)cl).getURLs();
for (java.net.URL url: urls) {
System.out.println(url.getFile());
}
如果您需要確定從哪個jar加載類 :
Class klass = ClassInTrouble.class;
CodeSource source = klass.getProtectionDomain().getCodeSource();
System.out.println(source == null ? klass : source.getLocation());
如果有用,您還可以獲取JVM中加載的所有類的列表 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.