13

所以我收到了这些错误

[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: Illegal local variable table length 17 in method test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.AppenderLayoutTest.()V

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

我读过的:

我做了什么:

资源:

由于某些非常疯狂的原因,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设置-XX:-UseSplitVerifier默认参数

论据
(来源:iforce.co.nz

我也试图让它JDK 1.6Project Properties.

抱怨
(来源:iforce.co.nz

JUnit 直接测试结果(trace 上没有错误)

朱尼特
(来源:iforce.co.nz

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

4

2 回答 2

7

听起来很奇怪。

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

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

此外,大多数覆盖库似乎对 JDK1.7 的支持很差。但是,Jacoco与 JDK1.7 配合得很好,所以我现在正在使用它。

于 2012-08-30T02:58:06.850 回答
1

-XX:-UseSplitVerifier

对我有用,我不必将JRE1.7降级到1.6

于 2013-02-12T10:51:35.310 回答