我有一个简单的问题。寻求帮助。
我正在使用emma为我的简单java文件进行代码覆盖。我在运行已检测的类文件时陷入困境。我是从ANT build.xml文件中完成的。当我尝试运行这个检测的类文件时,我收到以下错误:
[java] java.lang.VerifyError:期望分支目标11处的堆栈图框架
如果您需要我的整个build.xml,请告诉我。很乐意分享。
在论坛上,我看到我们可以使用XX Splitverifier。我不知道如何在ANT build.xml文件中使用它。有人可以分享你的答案吗?
答案 0 :(得分:0)
我在这里找到了对这个问题的一个很好的解释:
如果您正在使用字节码操作工具,例如静态编织模式中的AspectJ,我确实会出现问题,而这些工具尚未更新。它们基本上读取字节码,标记为Java 7字节码,并在Java 6模式下执行更改,保存仍在Java 7模式下标记的结果。因此,JDK 7中的VM看到Java 7字节码并激活新的Java 7验证程序,当它满足在Java 6模式下操作的字节码时,它会失败(或可能失败)。
这似乎很复杂,但简单的解决方案是通过添加此VM运行时选项强制在JDK 7中使用旧验证程序:-XX:-UseSplitVerifier。
所以这是一个向后兼容性问题。您可以选择应用解决方法或更改代码覆盖率工具。
你有充分理由使用艾玛吗? Jacoco已成为其replacement。我还建议使用SonarQube,它还会将Findbugs,PMD和Checkstyle集成到您的构建过程中。有关这一切在ANT中如何工作的示例,请参阅以下答案: