第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

小白,請(qǐng)教各位大佬!Java 加載器的問(wèn)題?

小白,請(qǐng)教各位大佬!Java 加載器的問(wèn)題?

郎朗坤 2019-06-18 09:23:25
請(qǐng)教各位大佬:classA和classB是由各自的類(lèi)加載器加載的,已知A先加載,B后加載。classC與B在同一jar內(nèi),同一個(gè)類(lèi)加載器加載。當(dāng)我在B中調(diào)用A的一個(gè)方法,參數(shù)是C的新實(shí)例,就報(bào)ClassNotFoundExceptionC,請(qǐng)問(wèn)該如何解決?謝謝!補(bǔ)充一點(diǎn),我在B中調(diào)用的A的方法的參數(shù)是Object類(lèi)型的,A本身是完全不知道有C的存在的。經(jīng)過(guò)實(shí)際驗(yàn)證,發(fā)現(xiàn)A的ClassLoader是B的ClassLoder的父加載器。
查看完整描述

2 回答

?
ibeautiful

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊

再次首先感謝各位的回答與討論,@臨風(fēng)的答案與實(shí)際情況是最接近的。我的解決辦法如下:
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的類(lèi)加載器去BC.jar里加載
//其中,只要在這里(B中)顯式地加載了ClassC,仍會(huì)報(bào)錯(cuò)。
Classclazz=Class.forName("C",true,A.class.getClassLoader());
System.out.println(clazz);
A.method(clazz.getConstructor().newInstance());
}catch(Throwablee){
e.printStackTrace();
}
}
                            
查看完整回答
反對(duì) 回復(fù) 2019-06-18
  • 2 回答
  • 0 關(guān)注
  • 219 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)