Создайте объект BCEL JavaClass из произвольного файла .class - PullRequest
4 голосов
/ 03 октября 2008

Я играю с BCEL. Я не использую его для генерации байт-кода, но вместо этого я пытаюсь проверить структуру существующих скомпилированных классов.

Мне нужно иметь возможность указать произвольный файл .class в любом месте моего жесткого диска и загрузить на его основе объект JavaClass . В идеале я бы хотел избежать добавления данного класса в мой путь к классам.

Ответы [ 3 ]

10 голосов
/ 03 октября 2008

Простой способ - создать ClassParser с именем файла и вызвать parse (). В качестве альтернативы вы можете использовать SyntheticRepository и указать путь к классам (это не ваш путь к классам, IYSWIM).

3 голосов
/ 07 октября 2015

Существующий .class может быть загружен классом в объект класса java lang. Затем он может быть преобразован в промежуточную структуру javaclass BCEL. Следующий код может помочь: -

Class<?> javaClass1 = null;
javaClass1 = ucl.loadClass("com.sample.Customer");
org.apache.bcel.classfile.JavaClass javaClazz1=org.apache.bcel.Repository.lookupClass(javaClass1);
2 голосов
/ 02 июня 2012
new ClassParser(classfilebytearrayhere).parse()
...