控制行号时的字节码库是什么?
我需要从现有类生成新类(通过生成java字节代码)。我将分析类的方法的主体(表达式)。表达式将决定我将生成什么代码。
对我来说,它是import和设置新类的源文件(与基本java文件相同)以及控制行号(当抛出异常时,stacktrace应该包含基本java文件的行号)。
例:
我有文件BaseClass.java。编译器从中生成BaseClass.class。我想分析这个类文件并生成GeneratedClass.class的字节代码。当在c处抛出异常时,stacktrace应包含“BaseClass.java第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?用于此目的的是什么?提示如何做或示例代码将特别有用。
编辑:
提示哪些库不能使用,因为要求不能满足也是有帮助的:)。
没有找到相关结果
已邀请:
2 个回复
购藏盗码韦
运行它会生成一个包含main方法的类,该方法只是为了查看堆栈跟踪中的行号而抛出RuntimeException。首先让我们看一下反汇编程序对此的影响:
所以这个类是从一个不存在的txt文件编译的,LineNumberTable说从偏移0开始的字节码对应于这个虚构文件的第123行。运行此文件表明此文件和linenumber也包含在堆栈跟踪中:
艰管垮淮