Domanda

Sto giocando con BCEL. Non lo sto usando per generare bytecode, ma invece sto cercando di ispezionare la struttura delle classi compilate esistenti.

Devo essere in grado di puntare a un file .class arbitrario ovunque sul mio disco rigido e caricare un JavaClass basato su quello. Idealmente, vorrei evitare di aggiungere la classe data al mio percorso di classe.

È stato utile?

Soluzione

Il modo più semplice è creare un ClassParser con il nome del file e chiamare parse (). In alternativa puoi usare SyntheticRepository e fornire un percorso di classe (che non è il tuo percorso di classe, IYSWIM).

Altri suggerimenti

È possibile caricare la classe .class esistente nell'oggetto classe java lang. Quindi può essere convertito nella struttura javaclass intermedia BCEL. Il seguente codice può essere d'aiuto: -

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()
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top