我有一个 .class 文件,可以将类加载到类对象(`java lang`)。我需要将类对象转换为 BCEL 中间 Java 类 ( org.apache.bcel.classfile.JavaClass
) 对象。我该怎么做呢?
2 回答
1
以下代码有帮助:-
public void get(){
Class<?> javaClass1 = null;
javaClass1 = ucl.loadClass("com.sample.Customer");
org.apache.bcel.classfile.JavaClass javaClazz1=org.apache.bcel.Repository.lookupClass(javaClass1);
}
于 2015-10-07T05:37:42.500 回答
0
简短的回答是您不能,但可能有另一种方法可以解决您的问题。
BCEL 需要从类文件中读取类,不能从 Class 实例生成 JavaClass。这是因为 BCEL 需要字节码,而不仅仅是类元数据(这是 Class 实例中的内容)。无法使用标准 JVM 指令从 Class 实例中获取字节码。相反,BCEL 从类文件中解析它。
话虽如此,如果您的 Class 代表磁盘上某处的类文件(在 jar 中或只是一个 .class 文件),您通常可以从 Class 实例访问类文件,尽管有些间接。这个问题可以让你开始(查找从哪里加载 java 类)
于 2015-10-06T15:37:14.287 回答