2008-10-02 97 views
4

我正在玩BCEL。我沒有用它來生成字節碼,但是我試圖檢查現有編譯類的結構。從任意.class文件創建一個BCEL JavaClass對象

我需要能夠指向我的硬盤驅動器上任意位置的任意.class文件,並根據該對象加載JavaClass對象。理想情況下,我想避免將給定的類添加到我的類路徑中。

回答

10

直接的方法是創建一個帶有文件名和調用parse()的ClassParser。或者,您可以使用SyntheticRepository並提供一個類路徑(這不是您的類路徑,IYSWIM)。

2
new ClassParser(classfilebytearrayhere).parse() 
2

現有的.class類可以被加載到java lang類對象中。然後它可以轉換成BCEL中間體javaclass結構。以下代碼可能有所幫助: -

Class<?> javaClass1 = null; 
javaClass1 = ucl.loadClass("com.sample.Customer"); 
org.apache.bcel.classfile.JavaClass javaClazz1=org.apache.bcel.Repository.lookupClass(javaClass1);