2013-06-12 81 views
1

我試圖做到這一點的字節碼:字符串平等

if("asd"=="asd"){} 

但我發現了以下錯誤:

Exception in thread "main" java.lang.VerifyError: (class: Main, method: main signature: ([LJava/lang/String:)V) Expecting to find integer on stack 
    at java.lang.Class.getDeclareMethods0(Native Method) 
    at java.lang.Class.privateGetDeclaredMethods(Unknown Source) 
    at java.lang.class.getMethod0(Unknown Source) 
    at java.lang.class.getMethod(Unknown Source) 
    at sun.launcher.LauncherHelper.getMainMethod(Unknown Source) 
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source) 

任何想法?

回答

3

IF_ICMPEQ是整數比較(這是什麼意思ICMP)你想用IF_ACMPEQ

比較引用BTW,你並不需要保存,然後加載的值,你可以使用堆棧上的值。

+0

好的謝謝隊友 – Tony

+1

我建議你看看ASM字節碼插件。您可以編寫Java代碼,它會顯示字節代碼和ASM代碼以在另一個窗口中生成它。 –

+0

另外,託尼,你在過去一週發佈了幾個問題,你沒有接受任何答案。這被認爲是糟糕的StackOverflow禮節;如果有人花時間回答你的問題,並且你對答案滿意,那麼你應該加快行動並將其標記爲已接受。當你這樣做時,我們獲得了聲望點。 –