SpringBoot项目启动报错:找不到MappingJackson2HttpMessageConverter

SpringBoot项目启动报错:java.lang.NoClassDefFoundError: Could not initialize class org.springframework.http.converter.json.MappingJackson2HttpMessageConverter

错误信息如下:

java.lang.NoClassDefFoundError: Could not initialize class org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
    at org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter.<init>(AllEncompassingFormHttpMessageConverter.java:61) ~[spring-web-4.2.6.RELEASE.jar:4.2.6.RELEASE]
    at org.springframework.web.client.RestTemplate.<init>(RestTemplate.java:158) ~[spring-web-4.2.6.RELEASE.jar:4.2.6.RELEASE]
    at org.springframework.cloud.config.client.ConfigServicePropertySourceLocator.getSecureRestTemplate(ConfigServicePropertySourceLocator.java:151) ~[spring-cloud-config-client-1.1.1.RELEASE.jar:1.1.1.RELEASE]
    at org.springframework.cloud.config.client.ConfigServicePropertySourceLocator.locate(ConfigServicePropertySourceLocator.java:69) ~[spring-cloud-config-client-1.1.1.RELEASE.jar:1.1.1.RELEASE]
    at org.springframework.cloud.bootstrap.config.PropertySourceBootstrapConfiguration.initialize(PropertySourceBootstrapConfiguration.java:89) ~[spring-cloud-context-1.1.1.RELEASE.jar:1.1.1.RELEASE]
    at org.springframework.boot.SpringApplication.applyInitializers(SpringApplication.java:640) ~[spring-boot-1.3.2.RELEASE.jar:1.3.2.RELEASE]
    at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:343) ~[spring-boot-1.3.2.RELEASE.jar:1.3.2.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) ~[spring-boot-1.3.2.RELEASE.jar:1.3.2.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1191) ~[spring-boot-1.3.2.RELEASE.jar:1.3.2.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1180) ~[spring-boot-1.3.2.RELEASE.jar:1.3.2.RELEASE]

可以到AllEncompassingFormHttpMessageConverter类中看到一下代码,发现是通过new MappingJackson2HttpMessageConverter()来创建MappingJackson2HttpMessageConverter

if (jackson2Present) {
            addPartConverter(new MappingJackson2HttpMessageConverter());
}

在debug状态下单独执行本行代码会报出以下错误,意思是找不到jackson-annotations,jar包中JsonSetter的Value,我的项目项目中发现有三个版本的jackson-annotations包,但是仅在jackson-annotations-2.9.0.jar包中JsonSetter中存在Value,故将其他版本排除,项目启动成功,万事大吉

java.lang.NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonSetter$Value
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
    at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
    at java.lang.Class.getMethod0(Class.java:3018)
    at java.lang.Class.getMethod(Class.java:1784)
    at org.springframework.util.ClassUtils.getMethodIfAvailable(ClassUtils.java:669)
    at org.springframework.util.ClassUtils.hasMethod(ClassUtils.java:603)
    at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.<clinit>(AbstractJackson2HttpMessageConverter.java:65)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter.<init>(AllEncompassingFormHttpMessageConverter.java:61)
    at org.springframework.boot.autoconfigure.BackgroundPreinitializer$MessageConverterInitializer.run(BackgroundPreinitializer.java:107)
    at org.springframework.boot.autoconfigure.BackgroundPreinitializer$1.runSafely(BackgroundPreinitializer.java:67)
    at org.springframework.boot.autoconfigure.BackgroundPreinitializer$1.run(BackgroundPreinitializer.java:60)
    at java.lang.Thread.run(Thread.java:748)

可能MappingJackson2HttpMessageConverter找不到会有很多种情况,以上问题只是在我的项目中发现的解决方法,仅供参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值