我有一个项目,希望将Java 1.7的版本更新为Java 1.8,但是运行UnitTests时所有映射器测试均失败。
该项目正在使用: SpringJUnit4ClassRunner
<div>
<ul>
<li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse in pretium mauris. Aliquam ultrices ipsum sit amet auctor porta. Donec et metus quis dolor dignissim euismod non a sem. Sed accumsan risus quis ipsum pellentesque, quis dictum metus porttitor.</li>
<li>Etiam et interdum ipsum, quis venenatis augue. Sed euismod, sem eget tristique molestie, arcu massa scelerisque nunc, eget scelerisque elit sem vitae nulla.</li>
<li>Nulla id</li>
<li>Nam ut</li>
</ul>
</div>
对于那部分例外:<dependency>
<groupId>ma.glasnost.orika</groupId>
<artifactId>orika-core</artifactId>
<version>1.4.5</version>
</dependency>
我发现了这个SO帖子:
Reflections - Java 8 - invalid constant type
但是我不确定这是否真的是问题,因为我不依赖于“ javassist”。
这与同一个问题有关吗? 我该如何克服?
更完整的StackTrace:
nested exception is ma.glasnost.orika.MappingException: java.lang.RuntimeException: java.io.IOException: invalid constant type: 15 at 142
答案 0 :(得分:3)
您的想法朝着正确的方向前进。
java.lang.RuntimeException: java.io.IOException: invalid constant type: 15 at 142
显示应用程序存在Java 8问题-如您的链接所述。
ma.glasnost.orika映射器取决于javassist,如您在堆栈跟踪中所见。 这是orika的传递依赖。
您可以使用mvn dependency:tree -verbose
来构建依赖关系树。
在那里,您可以查找依赖于Javassist的库以及确切的版本。
要使用与Java 8兼容的Javassist版本,请使用该依赖关系覆盖orika的隐式依赖关系:
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.18.2-GA</version>
</dependency>
但是对于这个示例,最好将orika版本升级到1.4.6,因为该版本已支持Java 8。