我想用反射(我需要的是從傳入的jar文件中的方法簽名信息)編寫反編譯器。我正在使用URLClassLoader
從jar文件中加載類,然後將該類傳遞給我的反編譯器。當它已經從java中的其他地方加載時加載一個反射類
但是,我遇到了一個問題。我試圖讀取的jar包含已經加載到我的環境中的不同版本的類。所以當我打電話時
ClassLoader myClassLoader = URLClassLoader.newInstance(jars, null);
Class<?> classToDecompile = Class.forName(className, false, myClassLoader);
它不是從我的jar文件中返回類,而是已經加載的類。有沒有辦法只加載反射的類信息,並從傳入的jar而不是從JRE中獲取?
編輯:
我試圖反編譯的jar包含在java.lang包,這會導致安全異常被拋出類:
java.lang.SecurityException異常:禁止的軟件包名稱:java.lang
什麼是堆棧跟蹤? – Ladlestein
那麼,事實證明,我並不在乎java的過多與現在的JRE不同,所以我可以過濾掉它。 –