Pergunta

Eu estou brincando com BCEL. Eu não estou usando-o para gerar bytecode, mas em vez disso eu estou tentando inspecionar a estrutura de classes compiladas existente.

Eu preciso ser capaz de apontar para uma arbitrária .class qualquer arquivo no meu disco rígido e carregar um JavaClass objeto com base nisso. Idealmente, eu gostaria de evitar ter de adicionar a classe dada ao meu classpath.

Foi útil?

Solução

A maneira simples é criar um ClassParser com o nome do arquivo e analisar call (). Alternativamente, você pode usar SyntheticRepository e fornecer um caminho de classe (que não é o seu classpath, IYSWIM).

Outras dicas

O .class existente pode ser de classe carregado de objeto java classe lang. Em seguida, ele pode ser convertido em BCEL estrutura javaclass intermediário. O código a seguir podem ajudar: -

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top