java - 由于 java.lang.NoClassDefFoundError : com/fasterxml/jackson/annotation/JsonMerge 无法运行代码

标签 java maven jackson

我在Intellij Idea 2018社区版中有一些测试代码,其中有多个pom文件。当我运行任何 testng 带注释的测试时,我收到一条错误,提示“未找到测试”。看起来问题是由于异常堆栈跟踪的这一部分造成的:

java.lang.NoClassDefFoundError:com/fasterxml/jackson/annotation/JsonMerge

我用谷歌搜索了一个解决方案,发现了这个 - https://github.com/FasterXML/jackson-annotations/issues/119还有这个https://stackoverflow.com/a/46406070 。看起来这个问题是由于我们的项目中没有相同版本的这些 jar 引起的。

1) jackson 核心(2.8.8)

2) jackson 数据绑定(bind)(2.9.2)

3) jackson 注释(2.8.5)

如您所见,我没有为所有 jar 提供相同的版本。我查看了项目中的所有 pom,没有找到添加所有这些依赖项的任何地方。我希望简单地在那里设置版本号。我应该简单地在我的父 pom 文件中添加所有依赖项还是执行其他操作?

如何在不损害项目的情况下解决此问题?我如何找出为什么这些 jar 不是同一版本?

最佳答案

您很可能通过不同的依赖项作为子依赖项导入不同的版本。

你可以让maven向你展示所谓的“有效的pom”,它将为你提供完整的依赖关系树,然后你可以从中看到包含的内容。

某些 IDE(例如 IntelliJ)可以选择以图形方式显示此信息,这使得查找此类冲突变得更加容易。

排除较低版本,如果需要,则显式添加对较新版本的依赖项。

关于java - 由于 java.lang.NoClassDefFoundError : com/fasterxml/jackson/annotation/JsonMerge 无法运行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59882011/

相关文章:

java - 如何使用 Maven Eclipse 和 glassfish 调试 Web 应用程序?

java - 在 WAR 文件部署中打开 zip 文件时出错

java - 使用 com.fasterxml.jackson.databind.ObjectMapper 序列化接口(interface)字段

java - 让java检查输入的行,看看它是否只是字母。

Java Observable/Observer 与仅传递引用

java - 转换为 Dalvik 格式失败 eclipse android-support-v4.jar 错误

java - 更改 Spring Data Rest WebMvc 中的 Jackson 日期格式设置

javascript - CKeditor 如何与 Bower 一起使用

java - AspectJ - 接口(interface)实现方法的切入点

java - 使用Postman调用我的Web服务时,如何调试“无法处理JSON”错误?