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

问题描述:

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

以下是我的依赖层次找到

enter image description here

我不知道如何从这里出发,因为只有一个版本似乎是在有效解决依赖条件

如果我跳过测试并运行安装构建成功,但在运行时运行测试或启动服务器失败

如果我导航存储库,则看到以下版本

2.1.1 2.1.2 2.3.3 2.4.3 2.5.1 2.5.3 2.8.2 

我应该删除它们吗?

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

您将在所有这些项目中引入多个版本的jackson依赖项。杰克逊的设计不是为了能够在各个版本之间进行混合和匹配。

您应该在Parent POM级别定义依赖关系管理来管理在您自己的项目中使用的jackson工件版本。

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

取决于如果你有机会到使用自己版本的杰克逊,你可能需要添加排除规则来使用他们的杰克逊版本停止Maven的这些罐子。

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

我猜的冲突将是coreannotation版本在使用中产生的,而是现实的,你将有与其他杰克逊文物是在不同的版本,如jaxb-annotationsdatabind等问题

+0

谢谢,经过很多尝试,我可以通过在pom.xml中显式添加最大版本的数据绑定和注释来解决这个问题 –