Javassist - 将标志传递给编译器

时间:2016-06-05 06:16:28

标签: java reflection javac javassist

我快速提问。我使用 Javassist 将方法添加到类中,然后重建jar文件。

Javassist 使用 Javac 编译代码。但是在经过 Javassist 编译后,我无法使用例如 LocalVariableTable javap的

我已经读过在编译期间必须在编译器中设置标志 - g

您是否知道如何强制 Javassist 使用自定义标志进行编译,例如 - g

感谢。

1 个答案:

答案 0 :(得分:0)

我找到了答案。

Javac Javassist 的内部编译器。 Javac 类具有名为 recordLocalVariables 的方法。

recordLocalVariables 在整个库中被调用3次(但它也是公共方法):

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

要确保局部变量将与字节码一起存储,只需在创建新方法时使用其中一种方法。