私はBCELで遊んでいます。私はバイトコードを生成するためにそれを使用していませんが、代わりに既存のコンパイル済みクラスの構造を検査しようとしています。
ハード ドライブの任意の場所にある任意の .class ファイルをポイントし、それに基づいてJavaClassオブジェクトをロードできる必要があります。理想的には、指定されたクラスをクラスパスに追加する必要はありません。
簡単な方法は、ファイル名で ClassParser を作成し、parse() を呼び出すことです。または、SyntheticRepository を使用してクラスパスを指定することもできます (これはクラスパス IYSWIM ではありません)。
既存の .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);
new ClassParser(classfilebytearrayhere).parse()