当前位置: 代码网 > it编程>编程语言>Java > SpringMVC框架使用jackson封装数据过程中遇到的问题及解决

SpringMVC框架使用jackson封装数据过程中遇到的问题及解决

2024年07月29日 Java 我要评论
springmvc使用jackson封装数据过程中遇到问题首先这是在springmvc框架下使用jackson封装数据遇到的问题。如果你遇到的异常跟我下面日志里的一样,请继续往下看。这是一个jacks

springmvc使用jackson封装数据过程中遇到问题

首先这是在springmvc框架下使用jackson封装数据遇到的问题。

如果你遇到的异常跟我下面日志里的一样,请继续往下看。

这是一个jackson版本引起的问题,到maven仓库https://mvnrepository.com/search?q=jackson搜索jackson最新的版本就能解决问题了,亲测有效。

抛出异常日志

14-jul-2020 09:54:11.594 警告 [rmi tcp connection(19)-127.0.0.1] org.springframework.context.support.abstractapplicationcontext.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': 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: com/fasterxml/jackson/databind/exc/invaliddefinitionexception
14-jul-2020 09:54:11.597 严重 [rmi tcp connection(19)-127.0.0.1] org.springframework.web.servlet.frameworkservlet.initservletbean context initialization failed
 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: com/fasterxml/jackson/databind/exc/invaliddefinitionexception
    at org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.instantiatebean(abstractautowirecapablebeanfactory.java:1320)
    at org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbeaninstance(abstractautowirecapablebeanfactory.java:1214)
    at org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.docreatebean(abstractautowirecapablebeanfactory.java:557)
    at org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbean(abstractautowirecapablebeanfactory.java:517)
    at org.springframework.beans.factory.support.abstractbeanfactory.lambda$dogetbean$0(abstractbeanfactory.java:323)
    at org.springframework.beans.factory.support.defaultsingletonbeanregistry.getsingleton(defaultsingletonbeanregistry.java:226)
    at org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory.java:321)
    at org.springframework.beans.factory.support.abstractbeanfactory.getbean(abstractbeanfactory.java:202)
    at org.springframework.beans.factory.support.defaultlistablebeanfactory.preinstantiatesingletons(defaultlistablebeanfactory.java:893)
    at org.springframework.context.support.abstractapplicationcontext.finishbeanfactoryinitialization(abstractapplicationcontext.java:879)
    at org.springframework.context.support.abstractapplicationcontext.refresh(abstractapplicationcontext.java:551)
    at org.springframework.web.servlet.frameworkservlet.configureandrefreshwebapplicationcontext(frameworkservlet.java:702)
    at org.springframework.web.servlet.frameworkservlet.createwebapplicationcontext(frameworkservlet.java:668)
    at org.springframework.web.servlet.frameworkservlet.createwebapplicationcontext(frameworkservlet.java:716)
    at org.springframework.web.servlet.frameworkservlet.initwebapplicationcontext(frameworkservlet.java:591)
    at org.springframework.web.servlet.frameworkservlet.initservletbean(frameworkservlet.java:530)
    at org.springframework.web.servlet.httpservletbean.init(httpservletbean.java:170)
    at javax.servlet.genericservlet.init(genericservlet.java:158)
    at org.apache.catalina.core.standardwrapper.initservlet(standardwrapper.java:1144)
    at org.apache.catalina.core.standardwrapper.loadservlet(standardwrapper.java:1091)
    at org.apache.catalina.core.standardwrapper.load(standardwrapper.java:983)
    at org.apache.catalina.core.standardcontext.loadonstartup(standardcontext.java:4978)
    at org.apache.catalina.core.standardcontext.startinternal(standardcontext.java:5290)
    at org.apache.catalina.util.lifecyclebase.start(lifecyclebase.java:150)
    at org.apache.catalina.core.containerbase.addchildinternal(containerbase.java:754)
    at org.apache.catalina.core.containerbase.addchild(containerbase.java:730)
    at org.apache.catalina.core.standardhost.addchild(standardhost.java:734)
    at org.apache.catalina.startup.hostconfig.manageapp(hostconfig.java:1736)
    at sun.reflect.nativemethodaccessorimpl.invoke0(native method)
    at sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62)
    at sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43)
    at java.lang.reflect.method.invoke(method.java:498)
    at org.apache.tomcat.util.modeler.basemodelmbean.invoke(basemodelmbean.java:300)
    at com.sun.jmx.interceptor.defaultmbeanserverinterceptor.invoke(defaultmbeanserverinterceptor.java:819)
    at com.sun.jmx.mbeanserver.jmxmbeanserver.invoke(jmxmbeanserver.java:801)
    at org.apache.catalina.mbeans.mbeanfactory.createstandardcontext(mbeanfactory.java:482)
    at org.apache.catalina.mbeans.mbeanfactory.createstandardcontext(mbeanfactory.java:431)
    at sun.reflect.nativemethodaccessorimpl.invoke0(native method)
    at sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62)
    at sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43)
    at java.lang.reflect.method.invoke(method.java:498)
    at org.apache.tomcat.util.modeler.basemodelmbean.invoke(basemodelmbean.java:300)
    at com.sun.jmx.interceptor.defaultmbeanserverinterceptor.invoke(defaultmbeanserverinterceptor.java:819)
    at com.sun.jmx.mbeanserver.jmxmbeanserver.invoke(jmxmbeanserver.java:801)
    at com.sun.jmx.remote.security.mbeanserveraccesscontroller.invoke(mbeanserveraccesscontroller.java:468)
    at javax.management.remote.rmi.rmiconnectionimpl.dooperation(rmiconnectionimpl.java:1468)
    at javax.management.remote.rmi.rmiconnectionimpl.access$300(rmiconnectionimpl.java:76)
    at javax.management.remote.rmi.rmiconnectionimpl$privilegedoperation.run(rmiconnectionimpl.java:1309)
    at java.security.accesscontroller.doprivileged(native method)
    at javax.management.remote.rmi.rmiconnectionimpl.doprivilegedoperation(rmiconnectionimpl.java:1408)
    at javax.management.remote.rmi.rmiconnectionimpl.invoke(rmiconnectionimpl.java:829)
    at sun.reflect.nativemethodaccessorimpl.invoke0(native method)
    at sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62)
    at sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43)
    at java.lang.reflect.method.invoke(method.java:498)
    at sun.rmi.server.unicastserverref.dispatch(unicastserverref.java:357)
    at sun.rmi.transport.transport$1.run(transport.java:200)
    at sun.rmi.transport.transport$1.run(transport.java:197)
    at java.security.accesscontroller.doprivileged(native method)
    at sun.rmi.transport.transport.servicecall(transport.java:196)
    at sun.rmi.transport.tcp.tcptransport.handlemessages(tcptransport.java:573)
    at sun.rmi.transport.tcp.tcptransport$connectionhandler.run0(tcptransport.java:834)
    at sun.rmi.transport.tcp.tcptransport$connectionhandler.lambda$run$0(tcptransport.java:688)
    at java.security.accesscontroller.doprivileged(native method)
    at sun.rmi.transport.tcp.tcptransport$connectionhandler.run(tcptransport.java:687)
    at java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1149)
    at java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:624)
    at java.lang.thread.run(thread.java:748)
caused by: org.springframework.beans.beaninstantiationexception: failed to instantiate [org.springframework.web.servlet.mvc.method.annotation.requestmappinghandleradapter]: constructor threw exception; nested exception is java.lang.noclassdeffounderror: com/fasterxml/jackson/databind/exc/invaliddefinitionexception
    at org.springframework.beans.beanutils.instantiateclass(beanutils.java:217)
    at org.springframework.beans.factory.support.simpleinstantiationstrategy.instantiate(simpleinstantiationstrategy.java:87)
    at org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.instantiatebean(abstractautowirecapablebeanfactory.java:1312)
    ... 67 more
caused by: java.lang.noclassdeffounderror: com/fasterxml/jackson/databind/exc/invaliddefinitionexception
    at org.springframework.http.converter.support.allencompassingformhttpmessageconverter.<init>(allencompassingformhttpmessageconverter.java:76)
    at org.springframework.web.servlet.mvc.method.annotation.requestmappinghandleradapter.<init>(requestmappinghandleradapter.java:205)
    at sun.reflect.nativeconstructoraccessorimpl.newinstance0(native method)
    at sun.reflect.nativeconstructoraccessorimpl.newinstance(nativeconstructoraccessorimpl.java:62)
    at sun.reflect.delegatingconstructoraccessorimpl.newinstance(delegatingconstructoraccessorimpl.java:45)
    at java.lang.reflect.constructor.newinstance(constructor.java:423)
    at org.springframework.beans.beanutils.instantiateclass(beanutils.java:204)
    ... 69 more
caused by: java.lang.classnotfoundexception: com.fasterxml.jackson.databind.exc.invaliddefinitionexception
    at org.apache.catalina.loader.webappclassloaderbase.loadclass(webappclassloaderbase.java:1308)
    at org.apache.catalina.loader.webappclassloaderbase.loadclass(webappclassloaderbase.java:1136)
    ... 76 more
 

springmvc使用jackson解析数据报错

springmvc使用jackson解析json格式数据的时候:

在springmvc.xml里面使用<mvc:annotation-driven />就不用再单独配置处理器映射器。

已经导入了jar包,controller里面debug能拿到数据,最后页面访问的时候报错:

406 (not acceptable)

这时你需要看你是不是将所有前端控制器的后缀都配置成了html,如果是html,那么springmvc默认会采用text/html编码。

所以,后缀使用别的后缀或者,不用后缀就可以了。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com