ASMCheckClassAdapter对于获取有用的日志输出非常有用,该日志输出说明了类在验证错误的情况下失败的原因,但它不能用于堆栈映射帧无效的情况。CheckClassAdapter不能用于这些情况,因为它接受ClassReader,这意味着要使用它来检查转换后的ClassNode,我必须执行以下操作: ClassWriter verifyWriter= new ClassWriter(ClassWriter.COMPUTE_
我正在使用asm框架的ClassAdapter编写一个字节码转换器。如果类中存在自定义注释,我希望添加一些方法,并使类实现一个接口。添加方法可以很好地工作,但我想知道让类实现接口的最佳方法是什么。由于visitAnnotation仅在visit之后调用,因此我需要以某种方式延迟调用超级访问方法,并在此之前缓冲所有需要的信息。public class
我对ClassNode所做的实际更改似乎起作用了(据我所知),但是,当我开始编写文件时,在下面指定的行上发生了IllegalArgumentException。这没有多大意义,因为ClassNode.accept()接受一个ClassVisitor实例,而ClassWriter扩展了ClassVisitor,如果有人有更多使用asm的经验,我们将不胜感激。(InsnList.java:144)
at org.objectweb.asm<
使用ASM创建类时,可以方便地将无意义的值传递给visitMaxs var cw = new ClassWriter如果我显式地为maxStack和maxLocals传递了正确的值,它就会起作用。(MethodVisitor.java:783)
at org.objectweb.asm.util.CheckMethodAdapter.visitEnd(CheckMethodAdapter.j
下面是我正在尝试使用ASM的类验证器验证的一段字节码: ALOAD 0 SIPUSH现在,当我通过ASM提供的类验证器运行这个类的字节码时,我得到了以下结果:
org.objectweb.asm.tree.analysis.AnalyzerException: **Error at instruction7: jav