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);
}
を追加することを期待する方法は、このためのasmコードです。
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にコードを変更し、問題を修正しました。 –
それから私はあなたが答えを受け入れるべきだと思いますか? – Viruzzo