重新編譯ClassLoader記錄被載入的類
阿新 • • 發佈:2018-12-26
1.新建java專案,建包java.lang,新建類ClassLoader(將src.zip中的ClassLoader.java中的內容copy過來),修改loadClass(String name)方法:
public Class<?> loadClass(String name) throws ClassNotFoundException {
String classNames = System.getProperty("SHOWEXECLASS");
if (null!=classNames&&!"".equals(classNames)) {
String [] nameArray=classNames.split("/");
for (String str : nameArray) {
if (name.startsWith(str)) {
System.out.println(name);
break;
}
}
}
return loadClass(name, false);
}
2.build專案,找到對應的class檔案(bin或target目錄下)
3.關閉eclipse,找到jdk1.7.0_17\jre\lib\rt.jar(你的jdk路徑),用WinRAR開啟到java\lang目錄下:
4.將2我們自己的生成的class檔案拖到rt.jar的這個目錄下(替換掉原來的class),關閉。重新開啟eclipse:修改run configruations 新增-DSHOWEXECLASS=java.lang的vm引數:
隨便寫個main方法測試結果:
注意:eclipse所用jdk和java專案所用jdk要一致,不然報版本不對