JAva.lang.ClassNotFoundException:org.codehaus.jackson.JsonProcessingException例外ソリューション
質問:
SpringMVCでJacksonを使用してjson出力を実現する場合、以下のように構成されています.
Maven座標は次のようになります.
次のような異常が発生しました.
最初はJacksonのJarパッケージをインポートしていないと思っていましたが、チェックしてみるとMaven座標があり、Jarパッケージもプロジェクトをインポートしていましたが、ずっと間違っていました.そこでインポートしたJacksonパッケージで検索しました org.codehaus.jackson.JsonProcessingExceptionクラスでは、インポートしたJacksonパッケージのうち、org.codehausのJacksonパッケージではなく、com.fasterxmlのJacksonパッケージであることがわかりました.だからMaven座標が間違っていると確信しました.
ソリューション:
将
に改心
SpringMVCでJacksonを使用してjson出力を実現する場合、以下のように構成されています.
text/plain;charset=UTF-8
Maven座標は次のようになります.
org.apache.geronimo.specs
geronimo-servlet_2.5_spec
1.2
org.springframework
spring-web
3.2.10.RELEASE
org.springframework
spring-webmvc
3.2.10.RELEASE
com.fasterxml.jackson.jaxrs
jackson-jaxrs-xml-provider
2.4.1
次のような異常が発生しました.
: Servlet /pcrm threw load() exception
java.lang.ClassNotFoundException: org.codehaus.jackson.JsonProcessingException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1718)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569)
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2493)
at java.lang.Class.getDeclaredConstructors(Class.java:1901)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:231)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1003)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:976)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:487)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:191)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:633)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:651)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:602)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:665)
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:521)
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:462)
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
at javax.servlet.GenericServlet.init(GenericServlet.java:158)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1279)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1192)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5210)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5493)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
最初はJacksonのJarパッケージをインポートしていないと思っていましたが、チェックしてみるとMaven座標があり、Jarパッケージもプロジェクトをインポートしていましたが、ずっと間違っていました.そこでインポートしたJacksonパッケージで検索しました org.codehaus.jackson.JsonProcessingExceptionクラスでは、インポートしたJacksonパッケージのうち、org.codehausのJacksonパッケージではなく、com.fasterxmlのJacksonパッケージであることがわかりました.だからMaven座標が間違っていると確信しました.
ソリューション:
将
com.fasterxml.jackson.jaxrs
jackson-jaxrs-xml-provider
2.4.1
に改心
org.codehaus.jackson
jackson-mapper-asl
1.9.4