Мне нужно создать новые классы (посредством генерации java-байтового кода) из существующих классов. Я буду анализировать тело (выражения) методов класса. Выражения будут определять, какой код я буду генерировать.
Для меня это importand, чтобы установить исходный файл для новых классов (тот же, что и базовый java файл), а также управлять номерами строк (когда выбрано исключение, stacktrace должен содержать номера строк базового java файла).
Пример: У меня есть файл BaseClass.java. Компилятор генерирует из него класс BaseClass.class. Я бы хотел проанализировать этот файл класса и сгенерировать байтовые коды для GeneratedClass.class. Когда в c выбрано исключение, stacktrace должен содержать "BaseClass.java line 3".
BaseClass.java
1: class BaseClass {
2: void method() {
3: call();
4: }
5:}
GeneratesClaas.class
a: class GeneratedClass {
b: void generatedMethod() {
c: generatedCall();
d: }
e:}
Мой вопрос: существуют ли библиотеки, которые поддерживают это требование? Javassist, ASM или BCEL? Что использовать для этой цели? Указания, как это сделать или пример кода, будут особенно полезны.
Edit: Подсказывает, какую библиотеку НЕ использовать, потому что требование НЕ может быть заполнено, тоже полезно:).