所以我收到了这些错误
[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。()V中偏移4处的分支目标11处期望堆栈图帧
[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)
我已尝试将java7 JRE
的默认参数设为here
-XX:-UseSplitVerifier
arguments http://iforce.co.nz/i/dvsh1eoc.n0m.png
我还试图通过JDK 1.6
上的Project Properties
投诉。
complaint http://iforce.co.nz/i/4jxuj4eb.rae.png
JUnit直接测试结果(跟踪没有错误)
junit http://iforce.co.nz/i/wicrvpsi.5gw.png
我没有选择,请帮忙! :(
答案 0 :(得分:7)
听起来很奇怪。
首先,检查您的代码,看看您是否使用了JDK 1.7中引入的新语法功能,如try-with-resource
或diamond operator
。
我在使用cobertura之前遇到过这个VerifyError。但是,当我将-XX:-UseSplitVerifier
设置为junit
任务时,它就会得到解决。我通过指定<jvmarg>
来设置它
嵌套元素到junit
任务。
此外,大多数覆盖库似乎都支持JDK1.7非常糟糕。但是, Jacoco 可以正常使用JDK1.7,所以我现在正在使用它。
答案 1 :(得分:1)
-XX:-UseSplitVerifier
对我有用而且我不必将 JRE 从 1.7 降级为 1.6