Spring 4.3.5与Jackson 2.8.7兼容问题:抛出NoSuchMethodError异常求助
解决Spring 4.3.5.RELEASE与Jackson 2.8.7版本不兼容导致的NoSuchMethodError问题
这个问题我帮不少开发者排查过,核心原因就是Spring与Jackson的版本依赖不匹配,下面给你拆解原因和具体解决办法:
问题根源
Spring 4.3.5.RELEASE对Jackson的兼容版本范围是2.6.x ~ 2.7.x,而你使用的Jackson 2.8.7调整了ObjectWriter.forType()方法的实现逻辑(或者说Spring 4.3.5预期的方法签名在Jackson 2.8.x中已发生变更),导致Spring的AbstractJackson2HttpMessageConverter在调用该方法时触发了NoSuchMethodError。
可行解决方案
你有两个明确的解决方向:
方案1:降级Jackson到兼容版本
将Jackson版本降级到Spring 4.3.5官方支持的稳定版本,比如2.7.9,这是4.3.x系列Spring推荐搭配的Jackson版本:
- 如果你用Gradle,修改版本配置:
jacksonVersion = '2.7.9' - 如果你用Maven,修改properties配置:
<properties> <jackson.version>2.7.9</jackson.version> </properties>
方案2:升级Spring版本适配Jackson 2.8.x
如果一定要保留Jackson 2.8.7,那需要把Spring版本升级到4.3.10.RELEASE及以上——从这个版本开始,Spring框架正式兼容Jackson 2.8.x系列,修改Spring版本即可:
springVersion = '4.3.10.RELEASE'
额外排查建议
修改版本后,建议检查项目的依赖树,避免其他依赖间接引入冲突的Jackson版本:
- Maven用户执行命令:
mvn dependency:tree - Gradle用户执行命令:
./gradlew dependencies
如果发现有低版本Jackson被间接引入,记得在对应依赖中添加排除规则,保证整个项目使用统一的兼容版本。
内容的提问来源于stack exchange,提问作者Shiladittya Chakraborty
相关产品推荐
相关产品推荐

