我在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/