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

时间:2017-06-30 15:13:12

标签: maven dependency-management jackson-modules

我在测试执行期间尝试编译maven项目时遇到此错误。从我疯狂的谷歌搜索后的理解是,这是因为类路径中的杰克逊核心的一些冲突版本。

以下是我在依赖关系层次结构中找到的内容

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

我应该删除所有这些吗?

这是一个多模块项目,每个moule都会带来一些依赖性。这有关系吗?

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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

我猜这个冲突将在正在使用的coreannotation版本之间,但实际上你会遇到其他杰克逊工件在jaxb-annotations等不同版本上的问题, databind等。