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包时报的错误,分析有两种原因:
- 升级了tomcat,升级后未清理缓存,导致升级后使用升级前的jar包
- war包打包有问题,如果是使用maven打包,可能是在引入依赖的时候,引用了不同的依赖,但他们属于同一jar中,导致出现名字相同但版本不同的jar包,而tomcat在记在的时候,tomcat8以前是按照默认顺序加载的,不容易出现问题,但8之后代码中没有明确给出加载顺序的空,是使用linux系统底层的排序方式,就有可能引起jar包冲突问题。
解决方案:
如果是原因1导致的,那清理一下tomcat缓存即可
如果是原因二导致的,则需要找到冲突的jar,修改依赖,重新打包,或者手动删除冲突的jar包。