簡體   English   中英

Jar在類路徑中

[英]Jar in the classpath

是否有一種以編程方式獲取類路徑中所有jar的完整列表?

我需要這個,因為我們在兩個平台之間存在行為差異。
一個由我們管理,但另一個不是,我需要知道是否有相同的罐子。

取決於classpath的確切含義,實際上有不同類的類路徑

  1. 引導類路徑

     System.getProperty("sun.boot.class.path") 
  2. 擴展類路徑

     System.getProperty("java.ext.dirs") 
  3. 用戶定義的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM