看板 java 關於我們 聯絡資訊
※ 引述《meconin (miss you ~)》之銘言: : 我現在有兩個 class 希望是用自己的 loader load 起來 : clsA, clsB, : clsA{ : test(){ : System.out.println( : clsA.class.getClassLoader().getClass().getName()); : } : } : clsB{ : static test(){ : clsA a = new clsA(); : System.out.println(new a.test()); : } : } : 我的 loader 暫時稱呼為 ld : 我在 main 裡面寫 : main{ : Class a = ld.load("clsA", false); : Class b = ld.load("clsB", false); : b.test(); : } : 會發現 clsA 的 loader 是 sun.misc.Launcher$AppClassLoader : 不知道有沒有高手對這個機制比較了解,可以說明一下? 你的 class loader 最重要了,你反而沒有給。 看起來你的 class loader 實做的 loadClass 是採一般的 delegation model, 而你在執行程式時所設定的 classpath 包含了 clsA 所在的路徑,所以當程式 使用你設計的 class loader 企圖載入 clsA 時,你的 class loader 會 delegate 給其 parent loader,而 parent loader(sun.misc.Launcher$AppClassLoader) 找的到 clsA 的 class file,於是就由 parent loader 載入 clsA。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.24.83.190