所以我得到这些错误

我想知道我该如何解决...
我读过的东西:

  • Java 7 JVM VerifyError in Eclipse
  • Testng, Emma, Cobertura, coverage and JDK 7 result in ClassFormatError and VerifyError
  • EMMA code coverage
  • Using EMMA with ANT for JUnit test coverage reporting
  • Bug 141252 - 1.6 compiler ClassFormatError: Illegal class name "" in class file (FIXED)
  • 3.2. : instrumenting Java classes on-the-fly

  • 我做了什么:
    资源:
  • build.xml(将在24小时后过期)
  • build.xml output(将在24小时后过期)
  • Ant diagnostics report(将在24小时后过期)
  • previous question
  • maven-emma-plugin-0.6.jar
  • emma.jar and emma_ant.jar

  • 出于某些非常疯狂的原因,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 eclipse - 带有emma和junit的Java 7导致java.lang.VerifyError和非法的本地变量错误-LMLPHP
    (来源:iforce.co.nz)
    我还尝试用JDK 1.6上的Project Properties使其投诉。
    eclipse - 带有emma和junit的Java 7导致java.lang.VerifyError和非法的本地变量错误-LMLPHP
    (来源:iforce.co.nz)
    JUnit直接测试结果(跟踪中没有错误)
    eclipse - 带有emma和junit的Java 7导致java.lang.VerifyError和非法的本地变量错误-LMLPHP
    (来源:iforce.co.nz)
    我没有选择,请帮忙! :(

    最佳答案

    听起来很奇怪。

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

    在使用cobertura时,我遇到了这个VerifyError。但是,当我将-XX:-UseSplitVerifier设置为junit任务时,此问题已解决。我通过指定<jvmarg>进行设置junit任务的嵌套元素。

    而且,大多数Coverage库似乎对JDK1.7的支持都很差。但是, Jacoco 在JDK1.7上可以正常工作,因此我现在正在使用它。

    10-05 18:58