【问题标题】:java.lang.VerifyError: Expecting a stackmap frame at branch target with Cobertura using mojojava.lang.VerifyError:使用 Mojo 使用 Cobertura 在分支目标处期望堆栈图帧
【发布时间】:2017-01-07 20:00:48
【问题描述】:

我使用 Cobertura 进行代码覆盖,但在运行测试用例时,当我使用 maven 构建运行测试用例时,所有测试用例都失败并出现以下错误。

 Reason:
    Expected stackmap frame at this location.
  Bytecode:
    0x0000000: 033d 11ff ff3e 125b 1102 1fb8 0061 2a2b
    0x0000010: 1102 1f3d 1100 003e c600 1912 5b1c 1d04
    0x0000020: b800 b511 ffff 3e2b b600 bbc0 00b7 a700
    0x0000030: 141d 9b00 0f12 5b1c 1d03 b800 b511 ffff
    0x0000040: 3e01 b500 c012 5b11 0220 b800 61b1  

但是当我使用 Eclipse run as JUnit 命令运行相同的测试用例时,它工作正常。

【问题讨论】:

  • 有时简单地禁用字节码验证会有所帮助 - 请参阅此处:stackoverflow.com/questions/300639/…
  • @GhostCat 试过了,但没用org.codehaus.mojocobertura-maven-plugin2.5.1版本> -noverify
  • 那么我建议:仔细研究一下eclipse在调用JUnit时的不同之处。哪些库,哪些 JVM 设置,等等。

标签: java junit cobertura mojo


【解决方案1】:

就我而言,使用 AdoptJDK 11,我能够使用 -noverify VM 参数消除错误。但是,Cobertura 不支持 Java 1 :(

对于 Gradle 用户:

test {
    jvmArgs '-noverify'
}

【讨论】:

    【解决方案2】:

    在 Eclipse 中,只需右键单击并在封面配置中添加
    -XX:-UseSplitVerifier 到参数选项卡中的 VM 参数

    【讨论】:

    • 有没有办法可以把它放在 Gradle 中以便我的团队可以使用?
    猜你喜欢
    • 2014-12-31
    • 2014-10-22
    • 2014-09-19
    • 2021-03-26
    • 1970-01-01
    • 2013-02-13
    • 2017-02-22
    • 2016-10-04
    相关资源
    最近更新 更多