相关疑难解决方法(0)

Testng,Emma,Cobertura,coverage和JDK 7导致ClassFormatError和VerifyError

我已经切换到最新的JDK 7,我遇到了在emma覆盖工具打乱的字节代码上运行testng单元测试的问题.我的测试用例都没有正确运行,对于大多数测试用例我都收到了这样的错误.

 java.lang.ClassFormatError: Illegal local variable table length 10 in method measurement.meter.AbstractSerialPortMeter.<init>(Lmeasurement/meter/SerialPort;)V at measurement.meter.Elc3133aTest.setUp(Elc3133aTest.java:42)
Run Code Online (Sandbox Code Playgroud)

我在这里找到了一篇文章JSR 292 Goodness Fast Code Coverage Tool Less 10k,它说"JSR 292引入了一个新的字节码指令invokedynamic,但也有几种新的常量池常量.这意味着大多数解析字节码的工具都像ASM,BCEL,findbugs或EMMA需要更新为兼容java 7."

检查了艾玛的主页,但看起来它已经很久没有更新了.

有人解决了类似的问题吗?

我也曾尝试过Cobertura.它看起来工作得更好但我得到了很多类型的例外VerifyError.

java.lang.VerifyError: Expecting a stackmap frame at branch target 85 in method measurement.meter.AbstractSerialPortMeter.close()V at offset 26
at measurement.meter.AbstractSerialPortMeterTest.setUp(AbstractSerialPortMeterTest.java:27)
Run Code Online (Sandbox Code Playgroud)

code-coverage emma cobertura java-7 jacoco

55
推荐指数
2
解决办法
4万
查看次数

Eclipse中的Java 7 JVM VerifyError

当我使用JDK 7在eclipse indigo中编译我的项目时,我得到以下错误对话框

在此输入图像描述

使用以下堆栈跟踪

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)
Run Code Online (Sandbox Code Playgroud)

我在这里发现了一个相关的bug 并使用了建议的使用jvm选项的解决方法,-XX:-UseSplitVerifier尽管它有效,但这个bug仍然让我感到困惑.

有谁知道为什么会这样,为什么解决方法......有效?

- 注意 -

该项目使用JDK 6进行编译.

java eclipse jvm java-7

33
推荐指数
1
解决办法
3万
查看次数

标签 统计

java-7 ×2

cobertura ×1

code-coverage ×1

eclipse ×1

emma ×1

jacoco ×1

java ×1

jvm ×1