William_Third
William_Third

Reputation: 41

java.lang.NoClassDefFoundError: org/springframework/orm/hibernate3/support/HibernateDaoSupport

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

Answers (3)

Sean Patrick Floyd
Sean Patrick Floyd

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.

Source: http://static.springsource.org/spring/docs/current/spring-framework-reference/html/orm.html#orm-hibernate

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

shazinltc
shazinltc

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

gigadot
gigadot

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

Related Questions