Reputation: 41
I'm working with Java web development, using spring3.1.1+hibernate3.6.0+tomcat7.0.29 + mysql5.5, but after running on my server, Eclipse prompted that
HTTP Status 500 - Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/springframework/orm/hibernate3/support/HibernateDaoSupport
and as follows in detail, type Exception report
message Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/springframework/orm/hibernate3/support/HibernateDaoSupport
description The server encountered an internal error (Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/springframework/orm/hibernate3/support/HibernateDaoSupport) that prevented it from fulfilling this request.
exception
org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/springframework/orm/hibernate3/support/HibernateDaoSupport
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:972)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
java.lang.NoClassDefFoundError: org/springframework/orm/hibernate3/support/HibernateDaoSupport
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClass(ClassLoader.java:791)
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2901)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1170)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
cc.fanbang.api.manager.DBManager.addUser(DBManager.java:139)
cc.fanbang.api.controller.TestController.handleDBManagerTestRequest(TestController.java:42)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:601)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
java.lang.ClassNotFoundException: org.springframework.orm.hibernate3.support.HibernateDaoSupport
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClass(ClassLoader.java:791)
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2901)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1170)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
cc.fanbang.api.manager.DBManager.addUser(DBManager.java:139)
cc.fanbang.api.controller.TestController.handleDBManagerTestRequest(TestController.java:42)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:601)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
I can't understand why it told me that no hibernatedaosupport, and I've imported it in the project in referenced libraries and web-inf/lib. packages which I've imported as follows,
commons-beanutils-1.8.3.jar
commons-coder-1.4.jar
commons-io-2.3.jar
commons-lang-2.6.jar
commons-logging-1.1.1.jar
ezorph-1.0.6.jar
json-lib-2.4-jdk15.jar
jstl-1.2.jar
org.springframework.asm-3.1.1.release.jar
org.springframework.beans-3.1.1.release.jar
org.springframework.context-3.1.1.release.jar
org.springframework.core-3.1.1.release.jar
org.springframework.expression-3.1.1.release.jar
org.springframework.web.servlet-3.1.1.release.jar
org.springframework.web-3.1.1.release.jar
servlet-api.jar
antlr-2.7.6
c3p0-0.9.1.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
ehcache-1.5.0.jar
hibernate-jpa-2.0-api-1.0.1.final.jar
hibernate3.jar
javassist-3.12.0.ga.jar
jta-1.1.jar
mysql-connector-java-5.1.12-bin.jar
org.springframework.orm-3.1.1.release.jar
org.springframework.jdbc-3.1.1.release.jar
org.springframework.aop-3.1.1.release.jar
org.springframework.transaction-3.1.1.release.jar
slf4j-api-1.6.1.jar
slf4j-nop-1.6.1.jar
and the part contents of applicationContext.xml related to transaction process as follows,
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="get*" read-only="true" />
<tx:method name="*" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="fbPointcut" expression="bean(dbManager)" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="fbPointcut" />
</aop:config>
Upvotes: 4
Views: 32821
Reputation: 299198
14.3 Hibernate
We will start with a coverage of Hibernate 3 in a Spring environment, using it to demonstrate the approach that Spring takes towards integrating O/R mappers. This section will cover many issues in detail and show different variations of DAO implementations and transaction demarcation. Most of these patterns can be directly translated to all other supported ORM tools. The following sections in this chapter will then cover the other ORM technologies, showing briefer examples there.
Note: As of Spring 3.0, Spring requires Hibernate 3.2 or later.
Your Hibernate Version is too old.
On re-reading your question, you say you are using Hibernate 3.6, yet you list hibernate3.jar
among your dependencies. Which is it?
Upvotes: 0
Reputation: 3666
I think it is because you have a different version of spring-orm
jar in your library which has the org.springframework.orm.hibernate3.support.HibernateDaoSupport
class.
Add spring-orm 3.1 jar to your lib. You can find the jar download link at the bottom.
In general if you get a NoClassDefFoundError
, google for the jar that has the class. Maven Central Repository is a good place to do that.
Your spring aop, jdbc and transaction jars are also of different version (3.0.7 and not 3.1.1). Always use jars of same versions . There are chances that application might throw some error if you use different versions of jars.
Upvotes: 1
Reputation: 8969
NoClassDefFoundError
means that the class loader cannot find a class which org.springframework.orm.hibernate3.support.HibernateDaoSupport
depends on. Not that HibernateDaoSupport
itself is missing. The best way to find which dependency is missing is to look at the import section of HibernateDaoSupport
It seems you are missing org.springframework.dao
library in your classpath.
Upvotes: 3