Javassist - передать флаги компилятору

У меня быстрый вопрос. Я использую Javassist для добавления методов в классы, а затем перестраиваю JAR-файлы.

Javasist использует Javac для компиляции кода. Но после компиляции с помощью Javassist я не могу получить доступ к LocalVariableTable, используя, например, javap.

Я читал, что флаг -g должен быть установлен в компиляторе во время компиляции.

Знаете ли вы, как заставить Javassist компилироваться с самоопределяемыми флагами, например - g?

Спасибо.


person Luke nullptr Krupa    schedule 05.06.2016    source источник


Ответы (1)


Я нашел ответ.

Javac — это внутренний компилятор Javassist. В классе Javac есть метод с именем recordLocalVariables.

recordLocalVariables вызывается 3 раза во всей библиотеке (но это также общедоступный метод) в:

  • CtBehavior.insertBefore
  • CtBehavior.insertAfter
  • CtBehavior.insertAt

Чтобы убедиться, что локальные переменные будут храниться с байт-кодом, просто используйте один из этих методов при создании нового метода.

person Luke nullptr Krupa    schedule 05.06.2016