项目中spring版本从3.x升级到5.x。该项目已经拥有来自 org.codehaus.jackson.map.ObjectMapper(1.9.11) 和 com.fasterxml.jackson.data-bind.ObjectMapper(2.11.0) 的 objectmapper,两者都已使用并处于 spring 版本(3.0) 的工作状态。 X)。 Eclipselink是当前使用的jpa实现。 将spring版本升级到5.x后,出现以下错误: 内部异常:java.lang.NoClassDefFoundError:com.fasterxml.jackson.databind.ObjectMapper
是否存在依赖冲突?如果是这样,为什么它在春季旧版本中有效?在线文档说 org.codehaus.jackson.map.ObjectMapper 已被 jackson-data binder 取代。但如果是这样,应该抛出与 org.codehaus.jackson.map.ObjectMapper 相关的 classNotFound 异常,对吗? 请帮忙解决这个问题
Spring 5及以上版本会出现版本问题。
从上面的异常可以明显看出,该异常的根本原因是缺少类 InvalidDefinitionException。 自 2.9.0 版本起,该类已在 jackson databind API 中引入。
要解决此问题,只需添加版本 2.9.0 或更高版本的 jackson databind 依赖项
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
不正确的类路径:即使包含依赖项,也要确保包含 ObjectMapper 的 JAR 文件位于类路径上。这通常会通过构建工具自动发生,但请仔细检查您是否手动管理类路径。
我能够通过更改模块信息文件来解决此错误。我注意到,我使用关键字 require static 导入了 jackson。
它应该仅使用“requires”导入