spring4.x引入jackson的maven依赖出现的问题

在Itellij idea中新建了webapp服务端项目后,引入了springmvc,客户端和服务端传递的数据类型定为json格式。然后在springmvc的配置文件(我的文件名为servlet-context.xml)中添加如下配置:

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
    <property name="messageConverters">
        <list>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>text/html; charset=UTF-8</value>
                        <value>application/json;charset=UTF-8</value>
                    </list>
                </property>
            </bean>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>text/html; charset=UTF-8</value>
                        <value>application/json;charset=UTF-8</value>
                    </list>
                </property>
            </bean>
        </list>
    </property>
</bean>

注:必须添加在 <mvc:annotation-driven/> 之前。

然后在引入jackson的maven依赖

   <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.8.5</version>
      <type>bundle</type>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.8.5</version>
      <type>bundle</type>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.8.0</version>
      <type>bundle</type>
    </dependency>

添加之后,启动服务端。然后就一直报错,下面为错误信息(截取了部分),主要就是jackson初始化所需的类找不到。

Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.JavaType

org.springframework.web.context.support.XmlWebApplicationContext.refresh Exception encountered during context initialization - cancelling refresh attempt
 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter#0' defined in class path resource [servlet-context.xml]: Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/JavaType
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:305)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:301)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196)...
Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/JavaType
	at java.lang.Class.getDeclaredMethods0(Native Method)
	at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
	at java.lang.Class.getDeclaredMethods(Class.java:1975)...
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.JavaType
	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)
	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)
	... 82 more

在网上搜索了各种答案,尝试了各种方法,均不见效,最后我从最开始检查,看看jar包是否导入了,是否成功编译了之类的。最后发现在External Library中成功引入了maven依赖,但是在WEB-INF的libs里面并没有生成jar包(难怪找不到。。。)



解决方案:打开了项目的Project Stucture,你会发现lib中缺少jackson的三个jar包,而右侧的Available Elements中有jackson的三个maven依赖。然后进行如下操作:选中lib点击上面的添加按钮“+”(或者右键选中添加),选择添加Library Files,选择jackson的三个依赖,点击“OK”按钮。执行完成后你会发现lib中有了jackson的三个jar包,而右侧的Available Elements中没有依赖了。



至此就大功告成了。是不是so easy! 然后我却在这里困了好久,试了各种方法。都去看了jackson的初始化源码。最后问题却出在这儿。所有有时候出现问题的地方可能是你没在意的位置。所有当出现问题时,要顺藤摸瓜,有时候找不到问题所在时就从最初的地方开始检查,也许有意外的收获哟~


  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值