亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

小白,請教各位大佬!Java 加載器的問題?

小白,請教各位大佬!Java 加載器的問題?

郎朗坤 2019-06-18 09:23:25
請教各位大佬:classA和classB是由各自的類加載器加載的,已知A先加載,B后加載。classC與B在同一jar內,同一個類加載器加載。當我在B中調用A的一個方法,參數是C的新實例,就報ClassNotFoundExceptionC,請問該如何解決?謝謝!補充一點,我在B中調用的A的方法的參數是Object類型的,A本身是完全不知道有C的存在的。經過實際驗證,發現A的ClassLoader是B的ClassLoder的父加載器。
查看完整描述

2 回答

?
ibeautiful

TA貢獻1993條經驗 獲得超6個贊

再次首先感謝各位的回答與討論,@臨風的答案與實際情況是最接近的。我的解決辦法如下:
ClassB:
static{
try{
Methodmethod=URLClassLoader.class.getDeclaredMethod("addURL",URL.class);
method.setAccessible(true);
URLurl=B.class.getProtectionDomain().getCodeSource().getLocation();//B和C所在的jar
method.invoke(A.class.getClassLoader(),url);//讓A的類加載器去BC.jar里加載
//其中,只要在這里(B中)顯式地加載了ClassC,仍會報錯。
Classclazz=Class.forName("C",true,A.class.getClassLoader());
System.out.println(clazz);
A.method(clazz.getConstructor().newInstance());
}catch(Throwablee){
e.printStackTrace();
}
}
                            
查看完整回答
反對 回復 2019-06-18
  • 2 回答
  • 0 關注
  • 220 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號