NOSuchMethodError jar包冲突

org.apache.catalina.core.ApplicationContext.log Initializing Spring FrameworkServlet 'dispatcherServlet'
ERROR ErrorPageFilter Forwarding to error page from request [**] due to exception [com.fasterxml.jackson.annotation.JsonInclude$Value.merge(Lcom/fasterxml/jackson/annotation/JsonInclude$Value;Lcom/fasterxml/jackson/annotation/JsonInclude$Value;)Lcom/fasterxml/jackson/annotation/JsonInclude$Value;]
java.lang.NoSuchMethodError: com.fasterxml.jackson.annotation.JsonInclude$Value.merge(Lcom/fasterxml/jackson/annotation/JsonInclude$Value;Lcom/fasterxml/jackson/annotation/JsonInclude$Value;)Lcom/fasterxml/jackson/annotation/JsonInclude$Value;

这个报错很坑,找了好久都没能解决,这里总结一下,具体来说,遇到这个问题的时候需要天时地利人和才能出现。。。。
1、首先tomcat版本要是8以上的版本
2、其次,系统的底层排序方式不是按照默认字母排序(具体是不是这个原因导致的目前不清楚,总之是两台一样的机器,一台有报错,一台没有)
3、打war包时出现重复依赖,jar包冲突才能重现

上述报错具体发生在tomcat加载webapp下的war包时报的错误,分析有两种原因:

  1. 升级了tomcat,升级后未清理缓存,导致升级后使用升级前的jar包
  2. war包打包有问题,如果是使用maven打包,可能是在引入依赖的时候,引用了不同的依赖,但他们属于同一jar中,导致出现名字相同但版本不同的jar包,而tomcat在记在的时候,tomcat8以前是按照默认顺序加载的,不容易出现问题,但8之后代码中没有明确给出加载顺序的空,是使用linux系统底层的排序方式,就有可能引起jar包冲突问题。

解决方案:

如果是原因1导致的,那清理一下tomcat缓存即可
如果是原因二导致的,则需要找到冲突的jar,修改依赖,重新打包,或者手动删除冲突的jar包。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值