在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ 如何實(shí)現(xiàn) Java 替換 或 熱替換 rt.jar 里的 一個方法?

如何實(shí)現(xiàn) Java 替換 或 熱替換 rt.jar 里的 一個方法?

public class Main{
    public staic void main(String[] args){
        System.out.println(Class.forName("a.b.old.C"));
    }
}

由于某些特殊需求,需要 把 Class.forName 改掉,當(dāng)使用該方法時,如果傳入的類的包名包含某一段路徑,就替換成另外一段路徑。比如 Class.forName("a.b.old.XXX") 獲取到的類將是 "a.b.new.XXX"。

請教一下,如何才能實(shí)現(xiàn)上訴效果,且不能修改rt.jar

回答
編輯回答
她愚我

不要使用class.forname,使用自定義的類加載器

2018年6月2日 23:15
編輯回答
念舊

可以在Class.forName外包一層。

void loadClass(String name){
    if("xxx".equals(name)){
        name = "newName";
    }
    Class.forName(name);
}
2017年2月26日 21:59
編輯回答
掛念你

首先不能把rt.jar放在java_home里,rt.jar不能動就動環(huán)境變量java_home,這樣bootstrap classloader就找不到rt.jar了,然后注冊一個自定義的classloader來加載java_home里的所有jar包,順便在rt.jar里動點(diǎn)手腳

2018年1月9日 19:48