3
我正在使用Java ASM向编译的类添加方法。在运行期间,当调用新添加的方法时,我得到
以下错误。调用使用Java ASM添加的方法时发生ClassFormatError错误
ClassFormatError: Field "valueEquals" in class test/asm/Item has illegal signature "(Ljava/lang/Object;)Z"
下面是我期待添加
public boolean valueEquals(Object obj){
return ItemHelper.valueEquals(obj);
}
下面是这种情况的汇编代码的方法。
String methodName = "valueEquals";
MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, methodName, "(Ljava/lang/Object;)Z", null, null);
mv.visitCode();
mv.visitVarInsn(ALOAD, 1);
mv.visitFieldInsn(INVOKESTATIC, "test/asm/ItemHelper", methodName, "(Ljava/lang/Object;)Z");
mv.visitInsn(IRETURN);
mv.visitMaxs(2, 1);
mv.visitEnd();
请有人帮助我确定我在这里做错了什么。 非常感谢您的帮助。
非常感谢@Viruzzo我将代码更改为visitMethodInsn并解决了问题。 – 2012-01-17 11:57:30
那么我想你应该接受答案? – Viruzzo 2012-01-17 12:09:26