java.lang.ClassNotFoundException: org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/26140993/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
java.lang.ClassNotFoundException: org.springframework.http.converter.json.MappingHymanson2HttpMessageConverter
提问by Ashok.N
I am using spring-integration in my project. When I deploy my app in the jetty container, I am getting the following exception:
我在我的项目中使用 spring-integration。当我在码头容器中部署我的应用程序时,我收到以下异常:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'integrationRequestMappingHandlerMapping': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'inboundhttpJobRequestGateway': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.integration.http.inbound.HttpRequestHandlingMessagingGateway]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/springframework/http/converter/json/MappingHymanson2HttpMessageConverter
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory.getObject(AbstractBeanFactory.java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
at com.dsths.spring.web.DsthsContextLoaderListener.configureAndRefreshWebApplicationContext(DsthsContextLoaderListener.java:97)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:284)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:771)
at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:411)
at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:763)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:247)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1238)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:480)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at com.dsths.common.container.core.deploy.DeploymentManager.deploy(DeploymentManager.java:54)
at com.dsths.common.container.core.deploy.DeploymentManager$$FastClassByCGLIB$$f5bc43eb.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:698)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.aop.interceptor.AsyncExecutionInterceptor.call(AsyncExecutionInterceptor.java:95)
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:724)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'inboundhttpJobRequestGateway': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.integration.http.inbound.HttpRequestHandlingMessagingGateway]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/springframework/http/converter/json/MappingHymanson2HttpMessageConverter
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:288)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1035)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:939)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory.getObject(AbstractBeanFactory.java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1093)
at org.springframework.integration.http.inbound.IntegrationRequestMappingHandlerMapping.detectHandlerMethods(IntegrationRequestMappingHandlerMapping.java:103)
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.initHandlerMethods(AbstractHandlerMethodMapping.java:109)
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.initApplicationContext(AbstractHandlerMethodMapping.java:89)
at org.springframework.context.support.ApplicationObjectSupport.initApplicationContext(ApplicationObjectSupport.java:119)
at org.springframework.web.context.support.WebApplicationObjectSupport.initApplicationContext(WebApplicationObjectSupport.java:72)
at org.springframework.context.support.ApplicationObjectSupport.setApplicationContext(ApplicationObjectSupport.java:73)
at org.springframework.context.support.ApplicationContextAwareProcessor.invokeAwareInterfaces(ApplicationContextAwareProcessor.java:117)
at org.springframework.context.support.ApplicationContextAwareProcessor.postProcessBeforeInitialization(ApplicationContextAwareProcessor.java:92)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:394)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1448)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
... 29 more
Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.integration.http.inbound.HttpRequestHandlingMessagingGateway]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/springframework/http/converter/json/MappingHymanson2HttpMessageConverter
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:162)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:110)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:280)
... 49 more
Caused by: java.lang.NoClassDefFoundError: org/springframework/http/converter/json/MappingHymanson2HttpMessageConverter
at org.springframework.integration.http.inbound.HttpRequestHandlingEndpointSupport.<init>(HttpRequestHandlingEndpointSupport.java:166)
at org.springframework.integration.http.inbound.HttpRequestHandlingMessagingGateway.<init>(HttpRequestHandlingMessagingGateway.java:72)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147)
... 51 more
Caused by: java.lang.ClassNotFoundException: org.springframework.http.converter.json.MappingHymanson2HttpMessageConverter
at java.net.URLClassLoader.run(URLClassLoader.java:366)
at java.net.URLClassLoader.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at com.dsths.common.container.ContainerClassLoader.loadClass(ContainerClassLoader.java:136)
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:429)
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:382)
... 58 more
I have both the jars Hymanson-core-asl-1.8.3
and Hymanson-core-2.3.1
in the class path. Still I am getting the error. How to resolve the problem?
我有罐子Hymanson-core-asl-1.8.3
和Hymanson-core-2.3.1
课程路径。我仍然收到错误。如何解决问题?
采纳答案by Artem Bilan
It's interesting what is com.dsths.common.container.ContainerClassLoader
...
有趣的是什么是com.dsths.common.container.ContainerClassLoader
...
Looks like spring-integration-http
is loaded by this ClassLoader
, but MappingHymanson2HttpMessageConverter
and all others spring-web
classes with another ClassLoader
.
看起来spring-integration-http
是由这个加载的ClassLoader
,但是MappingHymanson2HttpMessageConverter
和所有其他spring-web
类一起使用另一个ClassLoader
。
Would be great, if you place all spring jars within the same class loader.
如果您将所有弹簧罐放在同一个类加载器中,那就太好了。
The app is not able to find MappingHymanson2HttpMessageConverter in the class path. The problem is one class loader is picking one version and another class loader is picking another version.
该应用程序无法在类路径中找到 MappingHymanson2HttpMessageConverter。问题是一个类加载器正在选择一个版本,而另一个类加载器正在选择另一个版本。
回答by Meta
I had this weird error, too. I did a search in my jars in the web server's (tomcat) webapps/myapp/WEB-INF/lib and the class was there -- and only once.
我也有这个奇怪的错误。我在网络服务器(tomcat)的 webapps/myapp/WEB-INF/lib 中的 jars 中进行了搜索,并且该类在那里——而且只有一次。
It went away when I looked at another project at my job and used the same Hymanson jars.
当我在我的工作中查看另一个项目并使用相同的 Hymanson jars 时,它就消失了。
Originally, I had the following:
最初,我有以下内容:
Hymanson-core-2.4.3.jar
Hymanson-databind-2.4.3.jar
I removed these and added the following (packaged into my WEB-INF/lib):
我删除了这些并添加了以下内容(打包到我的 WEB-INF/lib 中):
Hymanson-mapper-asl-1.9.13.jar
Hymanson-datatype-jsr310-2.5.0.jar
Hymanson-datatype-joda-2.5.0.jar
Hymanson-databind-2.5.0.jar
Hymanson-core-2.5.0.jar
Hymanson-annotations-2.5.0.jar
I'm running this on Tomcat 7 on windows; using Java 1.6 (for compiling and runtime in Tomcat)
我在 Windows 上的 Tomcat 7 上运行它;使用 Java 1.6(用于在 Tomcat 中编译和运行)
servlet.xml:
servlet.xml:
<beans:bean id="HymansonMessageConverter"
class="org.springframework.http.converter.json.MappingHymanson2HttpMessageConverter" >
</beans:bean>
<beans:bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<beans:property name="messageConverters">
<beans:list>
<beans:ref bean="HymansonMessageConverter" />
</beans:list>
</beans:property>
</beans:bean>
In case it helps, I run the following shell from cygwin for searching for jats
如果有帮助,我从 cygwin 运行以下 shell 来搜索 jats
JAR="C:/java/Java/jdk1.7.0_71/bin/jar.exe"
srchdir="c:/appservers/apache-tomcat-7.0.57/webapps/my-web/WEB-INF/lib"
echo "SEARCH FOLDER: $srchdir"
find $srchdir -print | grep '\.jar$' | while read f
do
$JAR tf $f | grep 'MappingHymanson2HttpMessageConverter\.class' >/dev/null 2>&1
[ $? -eq 0 ] && echo "==> $f" && $JAR tf $f | grep MappingHymanson2HttpMessageConverter\.class
done
回答by Serge Ballesta
Normally, the class MappingHymanson2HttpMessageConverter
exists in spring-web.jar
(or spring-web-x.y.z-RELEASE.jar
), you should add it to your classpath, or if using maven add following dependency :
通常,该类MappingHymanson2HttpMessageConverter
存在于spring-web.jar
(或spring-web-x.y.z-RELEASE.jar
) 中,您应该将其添加到类路径中,或者如果使用 maven 添加以下依赖项:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>x.y.z.RELEASE</version>
</dependency>
Edit per Artem Bilan comment :
根据 Artem Bilan 评论编辑:
Normally, if you use maven, it should be present as a dependency of spring-integration-http
, provided you have this one.
通常,如果您使用 maven,它应该作为 的依赖项存在spring-integration-http
,前提是您有这个。