Re: [問題] ClassLoader
※ 引述《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
討論串 (同標題文章)