Создайте объект BCEL JavaClass из произвольного файла .class

StackOverflow https://stackoverflow.com/questions/164343

  •  03-07-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

Другие советы

Существующий .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);
new ClassParser(classfilebytearrayhere).parse()
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top