查找java類是從哪里加載的有誰知道如何通過編程找到java類加載器實際從哪里加載類?我經常在大型項目上工作,在這些項目中類路徑會變得非常長,而手動搜索實際上并不是一種選擇。我最近有一個問題其中,類加載器加載一個不正確的類版本,因為它位于兩個不同位置的類路徑上。那么,如何讓類加載程序告訴我實際的類文件來自于磁盤上的哪個位置呢?編輯:如果類加載程序由于版本錯配(或其他原因)而實際無法加載類,那么在讀取類之前,我們是否可以找到它試圖讀取的文件呢?
3 回答
一只甜甜圈
TA貢獻1836條經驗 獲得超5個贊
package foo;public class Test{
public static void main(String[] args)
{
ClassLoader loader = Test.class.getClassLoader();
System.out.println(loader.getResource("foo/Test.class"));
}}file:/C:/Users/Jon/Test/foo/Test.class
浮云間
TA貢獻1829條經驗 獲得超4個贊
public static String getClassResource(Class<?> klass) {
return klass.getClassLoader().getResource(
klass.getName().replace('.', '/') + ".class").toString();}getClass().getProtectionDomain().getCodeSource().getLocation()
添加回答
舉報
0/150
提交
取消
