如何从普通类(java.lang.class <! - ? - >)对象获取javaclass(org.apache.bcel.classfile.JavaClass)

时间:2015-10-06 13:24:10

标签: java bcel

我有一个.class文件,可以将类加载到类对象(`java lang`)。我需要将类对象转换为BCEL中间Java类(org.apache.bcel.classfile.JavaClass)对象。我该怎么做?

2 个答案:

答案 0 :(得分:0)

简短的回答是你不能,但可能有另一种方法来解决你的问题。

BCEL需要从类文件中读取类,并且不能从Class实例生成JavaClass。这是因为BCEL需要字节码而不仅仅是类元数据(这是Class实例中的内容)。使用标准JVM指令无法从Class实例获取字节码。相反,BCEL从类文件中解析它。

话虽这么说,如果你的Class代表某个磁盘上的类文件(在一个jar或只是一个.class文件中),你通常可以从Class实例访问类文件,尽管有点间接。这个问题可以帮助您入门(Find where java class is loaded from

答案 1 :(得分:0)

以下代码有助于: -

public void get(){

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