Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse中的Java 7 JVM验证错误_Java_Eclipse_Jvm_Java 7 - Fatal编程技术网

Eclipse中的Java 7 JVM验证错误

Eclipse中的Java 7 JVM验证错误,java,eclipse,jvm,java-7,Java,Eclipse,Jvm,Java 7,当我使用JDK 7在EclipseIndigo中编译项目时,会出现以下错误对话框 使用以下堆栈跟踪 Exception in thread "main" java.lang.VerifyError: Expecting a stackmap frame at branch target 32 in method ... at offset 0 at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.C

当我使用JDK 7在EclipseIndigo中编译项目时,会出现以下错误对话框

使用以下堆栈跟踪

Exception in thread "main" java.lang.VerifyError: Expecting a stackmap frame at branch target 32 in method ... at offset 0
    at java.lang.Class.getDeclaredMethods0(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)
我发现了一个相关的bug,并使用了建议的使用jvm选项的解决方法
-XX:-UseSplitVerifier
,尽管它可以工作,但这个bug仍然让我感到困惑

有人知道为什么会发生这种情况,以及为什么解决方法……有效吗

--注-- 该项目使用JDK 6编译得很好。

谈到“使用
-XX:-使用SplitVerifier
激活旧的验证器”。
这与将该选项描述为:

可以使用
-XX:-UseSplitVerifier
标志强制使用传统验证器

版本
50.0
类文件的
StackMapTable
属性缺失或不正确会导致
VerifyError
异常。
50.0版
类文件中重写字节码且未正确更新
堆栈映射表
的工具可能无法验证并触发异常

因此,报告确实指出:

如果类是Java7,AspectJ现在会自动激活以前的可选设置来创建stackmaps


当我遇到这个问题时,我通过从项目中删除JDK1.7系统库来修复它,并添加了1.6JDK库。我又开始运行这个项目了,但没有发现错误。当我再次在中添加JDK 1.7库时,它仍然有效,因此“交换”中的某些内容使其有效。

我在Juno中遇到了这个问题,但通过从4.2更新站点安装最新的4.2版本解决了它:

这与@VonC一年前给出的相同——但由于更新的AspectJ现在已经存在(但不是在最新的Juno存储库中,也不是Spring附带的),它现在构成了一个答案

但要归功于@VonC


请注意,这应该适用于3.8和4.2。

目前,我的环境是JDK1.7(j2sdk 1.7更新21)和Eclipse4.2Juno(SR2) 我也有同样的问题,所以我通过配置VM参数选项'-XX:-UseSplitVerifier'修复了它 但当我部署基于谷歌应用程序引擎的产品时,遇到了很大的麻烦


最后,我更改了java 6(更新43)

“已修复。如果类为Java7,AspectJ现在会自动激活以前的可选设置以创建堆栈映射。如果仍然存在问题,请重新打开。”…因此我猜这仍然是一个问题?@mre:在当前的Eclipse版本中,这可能仍然是一个问题。但是它应该在当前的3.8M3/4.2M3版本中修复。谢谢,我将尝试该版本。我无法验证该版本是否修复了该问题,因为Eclipse3.8没有AspectJ开发工具。://@mre当然你可以通过中列出的更新站点之一添加AspectJ作为插件?我也遇到了同样的情况!这是一个解决问题的办法!