我收到此錯誤:錯誤<init>方法調用方法?
java.lang.VerifyError: Bad <init> method call in method FooBar.<init>(I)V at offset 2
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2404)
at java.lang.Class.getConstructor0(Class.java:2714)
at java.lang.Class.getDeclaredConstructor(Class.java:2002)
試圖訪問了我與ASM 4.0修飾類的構造函數時
(使用JDK7)。
我已經檢查了字節碼類的初始化方法,它是如下:
aload_0
iload_1
invokespecial com/foo/F/<init>(I)V
return
反編譯字節碼產生:
import com.foo.Foo;
public class FooBar extends Foo
{
public FooBar(int i)
{
super(i);
}
}
我完全難倒,爲什麼我我收到這個錯誤。我不知道我是否提供了足夠的信息;請讓我知道我是否可以添加更多信息。
編輯:這裏是正在訪問的構造函數的代碼:
Class fooBarClass = /* define class from class file bytes */;
Constructor fooBarConstructor = fooBarClass.getDeclaredConstructor(int.class);
EDIT2:下面是Foo類代碼:
public class Foo extends F {
public Foo(int i) {
super(i);
}
}
請發表樣本代碼如何訪問構造函數 – kosa 2012-07-23 14:56:56
這可能有助於.. http://stackoverflow.com/questions/100107/reasons-of-getting-a-java-lang-verifyerror – Varun 2012-07-23 14:58:19