从任意.class文件创建BCEL JavaClass对象

时间:2008-10-02 20:13:35

标签: java bytecode bcel

我正在玩BCEL。我不是用它来生成字节码,而是试图检查现有编译类的结构。

我需要能够在硬盘驱动器上的任意位置指向任意.class文件,并根据该文件加载JavaClass对象。理想情况下,我希望避免将给定的类添加到类路径中。

3 个答案:

答案 0 :(得分:10)

直接的方法是使用文件名创建一个ClassParser并调用parse()。或者,您可以使用SyntheticRepository并提供类路径(不是您的类路径,IYSWIM)。

答案 1 :(得分:3)

现有的.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);

答案 2 :(得分:2)

new ClassParser(classfilebytearrayhere).parse()