2013-06-12 48 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礼节;如果有人花时间回答你的问题,并且你对答案满意,那么你应该加快行动并将其标记为已接受。当你这样做时,我们获得了声望点。 –