我在玩BCEL。我不是用它来生成字节码,而是试图检查现有编译类的结构。
我需要能够指向硬盘驱动器上任意位置的任意 .class 文件并基于该文件加载JavaClass对象。理想情况下,我想避免将给定的类添加到我的类路径中。
我在玩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()