带有emma和junit的Java 7导致java.lang.VerifyError和非法局部变量错误

Kil*_*awr 13 eclipse ant emma java-7

所以我收到了这些错误

[junit]方法test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.AppenderLayoutTest.()V中的非法局部变量表长度17

[junit] java.lang.VerifyError:在方法test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.StressTest中调用分支目标11处的stackmap帧.()V在偏移量4处

[junit] java.lang.ClassFormatError:方法test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.AppenderLayoutTest.()V中的非法局部变量表长度17

我想知道如何解决它......

我读过的内容:

我做了什么:

资源:

对于一些非常疯狂的原因,JUnit通过target="test"但失败了target="emmatest".

这是命令提示符下的输出 java -version

java version "1.7.0_03"
Java(TM) SE Runtime Environment (build 1.7.0_03-b05)
Java HotSpot(TM) 64-Bit Server VM (build 22.1-b02, mixed mode)
Run Code Online (Sandbox Code Playgroud)

我试过设置的默认参数为我java7 JRE-XX:-UseSplitVerifier这里

参数http://iforce.co.nz/i/dvsh1eoc.n0m.png

我还试图使它投诉JDK 1.6Project Properties.

投诉http://iforce.co.nz/i/4jxuj4eb.rae.png

JUnit直接测试结果(跟踪没有错误)

junit http://iforce.co.nz/i/wicrvpsi.5gw.png

我没有选择,请帮忙!:(

coo*_*fan 7

听起来很奇怪.

首先,检查您的代码,看看您是否使用过JDK 1.7中引入的新语法功能,如try-with-resourcediamond operator.

我在使用cobertura之前遇到过这个VerifyError.但是,当我设置-XX:-UseSplitVerifierjunit任务,它解决了.我通过<jvmarg>junit任务指定嵌套元素来设置它.

此外,大多数覆盖库似乎支持JDK1.7非常糟糕.但是,Jacoco与JDK1.7 一起工作正常,所以我现在正在使用它.