nested exception is java.lang.NoClassDefFoundError: Could not initialize class org.springframework.http.converter.json.MappingJackson2HttpMessageConverter


背景

在開發過程中配置如下信息:

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <list>
                   <ref bean="mappingJacksonHttpMessageConverter" />
            </list>
        </property>
    </bean>

    <bean id="mappingJacksonHttpMessageConverter"
        class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
         <property name = "supportedMediaTypes">
              <list>
                <bean class="org.springframework.http.MediaType">
                 <constructor-arg index="0" value="text"/>
                 <constructor-arg index="1" value="plain"/>
                 <constructor-arg index="2" value="UTF-8"/>
                </bean>
                <bean class="org.springframework.http.MediaType">
                 <constructor-arg index="0" value="*"/>
                 <constructor-arg index="1" value="*"/>
                 <constructor-arg index="2" value="UTF-8"/>
                </bean>
                <bean class="org.springframework.http.MediaType">
                 <constructor-arg index="0" value="text"/>
                 <constructor-arg index="1" value="*"/>
                 <constructor-arg index="2" value="UTF-8"/>
                </bean>
                 <bean class="org.springframework.http.MediaType">
                 <constructor-arg index="0" value="application"/>
                 <constructor-arg index="1" value="json"/>
                 <constructor-arg index="2" value="UTF-8"/>
                </bean>
              </list>
        </property>
    </bean>

 

報錯信息

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: Could not initialize class org.springframework.http.converter.json.MappingJackson2HttpMessageConverter

 

解決過程

在網絡上搜索都說是spring版本與MappingJackson2HttpMessageConverter類不匹配,參考  。但是我檢查我的項目中確實是使用的spring4.X版本,所以應該不是這個問題。

然后在搜索的時候意識到可能是某些jar包引用的版本不對。但是這個又不太好糾錯到底哪個jar包問題。無意中發現這個博客中使用的jackson版本和我的不太一樣,他用的是2.8.5,我用的是2.9.10.1 ,我的版本貌似太新了,於是死馬當活馬醫試了一下,發現能正常啟動了。

 

結論

1.首先要檢查spring版本與MappingJackson2HttpMessageConverter是否匹配

2.嘗試更換jackson版本。

3.一般包類找不到拋NoClassDefFoundError的異常,首先要考慮是否jar沒有引用,jar包沖突,或者是版本不對。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM