当我使用 JDK7 或 JDK6 在 Eclipse 中编译和运行我的项目时,一切都很好。但是,在我使用 ANT 构建它然后尝试使用系统 JDK7 运行它之后,我收到错误消息:
方法 myClass.myMethod() [[Ljava/lang/Object; 中分支目标 25 处的堆栈图帧不一致;在偏移 14
我到处找,在 StackOverFlow 上发现了几个很好的问题:
- Eclipse 中的 Java 7 JVM 验证错误
- Akka Actors 失败,VerifyError: Inconsistent stackmap frames at branch target
两者基本上都建议添加-XX:-UseSplitVerifier
为确实解决了该问题的 JVM 选项。我仍然不完全理解为什么,但显然这个错误报告应该会有所帮助。可惜我还是没看懂……
我确实注意到有人在使用面向方面的编程的问题之一,这让我觉得我正在使用Guice(谷歌的 DI 框架),这可能会导致问题,但我不知道如何。假设支持JDK7。
我也在使用 Proguard,但这也应该适用于 JDK7。
无论如何,在这一点上,我不知道为什么这种解决方法有效,除了它基本上回退到以前的 JDK(在这种情况下是 JDK6)版本时,当代码的某些部分试图使用字节码时(这就是为什么我认为它与DI)代码有关。但我仍然无法建立正确的链接。而且我也可能会离开!
如果有人可以解释发生了什么或为什么会发生这种情况,我将非常感激。此外,我真的很讨厌不得不使用解决方法,因为这不是我认为的长期解决方案。