Pregunta

Estoy jugando con BCEL. No lo estoy usando para generar un código de bytes, sino que estoy tratando de inspeccionar la estructura de las clases compiladas existentes.

Necesito poder apuntar a un archivo .class arbitrario en cualquier parte de mi disco duro y cargar un JavaClass objeto basado en eso. Idealmente, me gustaría evitar tener que agregar la clase dada a mi classpath.

¿Fue útil?

Solución

La forma más sencilla es crear un ClassParser con el nombre de archivo y llamar a parse (). Alternativamente, puede usar SyntheticRepository y suministrar una classpath (que no es su classpath, IYSWIM).

Otros consejos

La clase .class existente se puede cargar en el objeto de clase java lang. Luego se puede convertir en la estructura de javaclass intermedia BCEL. El siguiente código puede ayudar: -

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()
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top