使用jdk 1.8.0_51
源= 1.7,目标= 1.7
Junit 4.6,ant 1.8.0

怎么了?
所有通过1.7的测试现在都失败了。
我需要了解以下内容:


为什么会这样呢?
是否有类似-XX的选项:-UseSplitVerifier(java 1.7)
如何找出问题的根本原因?
解决此问题应采取哪些步骤?


我们有用于构建,部署和测试的目标。
构建和部署工作正常,但Junit测试在所有模块中均失败。
我尝试升级ant(1.8.9),junit 4.10。
难道是因为没有用Java 1.8编译的jar?
我应该确保我使用的所有jar都使用java8编译吗?如果是这样,那可能是一个不好的信号:(

我试着通过命令提示符运行junit,它起作用了。
java -cp ./target/package-test:./target/mycompany-common.jar:./lib/junit-4.6.jar org.junit.runner.JUnitCore com.mycompany.JunitTest

================================================== ==================================
          测试:1
        批次:1
        线程数:1
           主持人:远程


================================================== ==================================
试运行失败错误跳过时间
JunitTest 1 1 0.068秒
-------------------------------------------------- -----------------------------------
总计1 1
================================================== ==================================
以下测试有失败或错误:
com.mycompany.JunitTest

失败和错误可以在以下文件中看到:
/target/reports/junit/TEST-com.mycompany.JunitTest.txt

第一次失败的测试结果:
测试套件:com.mycompany.JunitTest
运行测试:1,失败:0,错误:1,经过时间:0.068秒

测试用例:测试用时0.018秒
    导致错误
在分支目标65处期望一个堆栈映射框架
异常详细信息:
  地点:
    com / mycompany / Identifier.equals(Ljava / lang / Object;)Z @ 26:ifne
  原因:
    在此位置的预期堆栈图框架。
  字节码:
    0x0000000:033d 11ff ff3e 1215 1100 35b8 001b 2bc1
    0x0000010:0002 1100 353d 1100 003e 9a00 271c 1100
    0x0000020:35a0 0016 1d11 0000 a000 0f12 151c 1d04
    0x0000030:b800 4111 ffff 3e12 1511 0036 b800 1b03
    0x0000040:ac1d 9b00 0f12 151c 1d03 b800 4111 ffff
    0x0000050:3e12 1511 0039 b800 1b2b c000 023a 0412
    0x0000060:1511 003a b800 1b2a b400 2619 04b4 0026
    0x0000070:b600 43ac
  堆栈表:
    same_frame_extended(@ 89)

java.lang.VerifyError:在分支目标65处期望一个堆栈映射框架
异常详细信息:
  地点:
    com / mycompany / Identifier.equals(Ljava / lang / Object;)Z @ 26:ifne
  原因:
    在此位置的预期堆栈图框架。
  字节码:
    0x0000000:033d 11ff ff3e 1215 1100 35b8 001b 2bc1
    0x0000010:0002 1100 353d 1100 003e 9a00 271c 1100
    0x0000020:35a0 0016 1d11 0000 a000 0f12 151c 1d04
    0x0000030:b800 4111 ffff 3e12 1511 0036 b800 1b03
    0x0000040:ac1d 9b00 0f12 151c 1d03 b800 4111 ffff
    0x0000050:3e12 1511 0039 b800 1b2b c000 023a 0412
    0x0000060:1511 003a b800 1b2a b400 2619 04b4 0026
    0x0000070:b600 43ac
  堆栈表:
    same_frame_extended(@ 89)

    在com.mycompany.JunitTest.test(JunitTest.java:17)

最佳答案

从Java 8开始,没有--usesplitverifier等效项。


您可以使用-noverify来阻止Java 8在严格字节代码实现模式下编译代码。
如果使用Eclipse,还可以执行Windows-> preferences-> compiler->取消选中“保留未使用的局部变量”选项

10-04 14:36