升级到Java 8会导致unittest Java.io.IOException中的Orika mapper:无效常量类型:15 at 142

升级到Java 8会导致unittest Java.io.IOException中的Orika mapper:无效常量类型:15 at 142,java,java-8,orika,Java,Java 8,Orika,我有一个项目,我想将版本从Java1.7更新到Java1.8,但是运行UnitTests所有映射器测试都失败了 该项目正在使用: SpringJunitClassRunner <dependency> <groupId>ma.glasnost.orika</groupId> <artifactId>orika-core</artifactId> <version>1.4.5</version&g

我有一个项目,我想将版本从Java1.7更新到Java1.8,但是运行UnitTests所有映射器测试都失败了

该项目正在使用: SpringJunitClassRunner

<dependency>
    <groupId>ma.glasnost.orika</groupId>
    <artifactId>orika-core</artifactId>
    <version>1.4.5</version>
</dependency>

你的想法方向正确

java.lang.RuntimeException:java.io.IOException:无效常量类型:15 at 142
显示应用程序在Java8方面存在问题-如链接中所述

正如您在堆栈跟踪中看到的,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>

org.javassist
javassist
3.18.2-GA

但是对于这个例子,最好将orika版本升级到1.4.6,因为这个版本已经支持Java 8。

如果您没有对
javassist
的依赖,它就不会在您的类路径中。Spring间接地依赖于(传递的)。您发布的链接是正确的:您使用的是旧版本的
javassist
,您需要更新到新版本,或者继续使用Java7。
  <dependency>
    <groupId>org.javassist</groupId>
    <artifactId>javassist</artifactId>
    <version>3.18.2-GA</version>
  </dependency>