我有一个简单的问题。我正在使用 Javassist 向类添加方法,然后重建 jar 文件。
Javassist使用Javac来编译代码。但是在 Javassist 编译后,我无法使用例如 LocalVariableTable 访问 LocalVariableTable javap。
我读到标志 - g 必须在编译期间在编译器中设置。
你知道如何强制Javassist使用自定义标志进行编译,例如-g吗?
谢谢。
最佳答案
我找到了答案。
Javac是Javassist的内部编译器。 Javac 类具有名为 recordLocalVariables 的方法。
recordLocalVariables 在整个库中被调用 3 次(但它也是公共(public)方法):
- CtBehavior.insertBefore
- CtBehavior.insertAfter
- CtBehavior.insertAt
为了确保局部变量将与字节码一起存储,只需在创建新方法期间使用这些方法之一。
关于Javassist - 将标志传递给编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37639049/