Question

Je joue avec BCEL. Je ne l'utilise pas pour générer du bytecode, mais j'essaie plutôt d'inspecter la structure des classes compilées existantes.

Je dois pouvoir pointer sur un fichier .class arbitraire n'importe où sur mon disque dur et charger un JavaClass en fonction de cet objet. Idéalement, je voudrais éviter de devoir ajouter la classe donnée à mon chemin de classe.

Était-ce utile?

La solution

La méthode la plus simple consiste à créer un ClassParser avec le nom de fichier et d’appeler parse (). Vous pouvez également utiliser SyntheticRepository et fournir un chemin de classe (ce n'est pas votre chemin de classe, IYSWIM).

Autres conseils

La classe .class existante peut être une classe chargée dans un objet de classe java lang. Ensuite, il peut être converti en structure de classe javac intermédiaire BCEL. Le code suivant peut aider: -

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()
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top