java.lang.NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonInclude$Value

java.lang.NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonInclude$Value

我在测试执行期间尝试编译我的 Maven 项目时 运行 遇到了这个错误。根据我疯狂搜索后的理解,这是因为类路径中存在一些相互冲突的 jackson-core 版本。

这是我在依赖层次结构中找到的

鉴于有效解决的依赖项中似乎只有一个版本,我不确定如何从这里开始

如果我跳过测试并且 运行 安装构建成功,但如果我 运行 测试或在 运行 时间

期间启动服务器则失败

如果我浏览存储库,我会看到以下版本

2.1.1   2.1.2   2.3.3   2.4.3   2.5.1   2.5.3   2.8.2

我应该全部删除吗?

这是一个多模块项目,每个模块都带来了这种依赖关系的一些版本。这重要吗?

您正在为所有这些项目引入多个版本的 jackson 依赖项。 Jackson 的设计目的不是为了能够跨版本混合搭配。

您应该在父 POM 级别定义依赖管理,以管理您自己的项目中使用的 jackson 工件版本。

https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Management

根据您是否有权访问这些使用自己的 jackson 版本的其他 Jar,您可能需要添加排除项以阻止 maven 使用他们的 jackson 版本。

https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html

我猜冲突将发生在正在使用的 coreannotation 版本之间,但实际上您会遇到其他 jackson 工件在不同版本上的问题,例如 jaxb-annotations, databind 等等