我在玩jasmin,我嘗試啓動我的.class文件,該文件應該執行簡單的字符串連接。我的茉莉來源是這樣的:jasmin黑客入侵併驗證錯誤
.class public default_class
.super java/lang/Object
.method public static main([Ljava/lang/String;)V
.limit locals 1
.limit stack 1
invokestatic main_65428301()I
return
.end method
.method public static main_65428301()I
.limit locals 1
.limit stack 100
new java/lang/String
dup
ldc "foo"
invokestatic java/lang/String.valueOf(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java/lang/StringBuilder(Ljava/lang/String;)V
ldc "bar"
invokevirtual java/lang/StringBuilder.append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java/lang/String.toString()V
astore_0
iconst_0
ireturn
.end method
現在我能夠運行Java的罐子jasmin.jar和我default_class.class。然而,當我嘗試啓動它像Java default_class我得到一個錯誤:
Exception in thread "main" java.lang.VerifyError: (class: default_class, method: main_65428301 signature:()I) Illegal use of nonvirtual function call
我應該在裝配改變什麼來得到這個工作?
我試圖模仿日食在類似的情況下做,但感謝指出這一點。無論如何,我想知道什麼是錯誤的調用我的第二個主要的方法,因爲這是什麼錯誤消息建議 –
@ k_wisniewski,在我看來它是指'invokespecial java/lang/StringBuilder(Ljava/lang/String;) V',它在'(class:default_class,method:main_65428301 signature:()I)' – zch
好吧,我現在擺脫了這個問題 –