有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

SpringJava。lang.NoClassDefFoundError:org/springframework/orm/hibernate3/support/HibernateDaoSupport

我正在使用spring3进行Java web开发。1.1+休眠3。6.0+tomcat7。0.29+mysql5。5,但在我的服务器上运行之后,Eclipse提示

 HTTP Status 500 - Handler processing failed; nested exception is java.lang.NoClassDefFoundError:       org/springframework/orm/hibernate3/support/HibernateDaoSupport 

具体如下:, 类型异常报告

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. 

例外情况

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) 

我不明白为什么它告诉我没有HibernateDataOSupport,我已经将它导入到项目中的引用库和web inf/lib中。 我导入的包如下所示

 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 

以及applicationContext的部分内容。与事务处理相关的xml如下所示

<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>

共 (3) 个答案

  1. # 1 楼答案

    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.

    资料来源:http://static.springsource.org/spring/docs/current/spring-framework-reference/html/orm.html#orm-hibernate

    你的Hibernate版本太旧了

    重新阅读您的问题时,您说您正在使用Hibernate 3.6,但您在依赖项中列出了hibernate3.jar。是哪一个

  2. # 2 楼答案

    我认为这是因为您的库中有一个不同版本的spring-ormjar,它有org.springframework.orm.hibernate3.support.HibernateDaoSupport

    spring-orm 3.1 jar添加到您的库中。您可以在底部找到jar下载链接

    一般来说,如果你得到一个NoClassDefFoundError,用谷歌搜索包含该类的jarMaven Central Repository是这样做的好地方

    SpringAOP、jdbc和事务JAR的版本也不同(3.0.7而不是3.1.1)。始终使用相同版本的罐子。如果您使用不同版本的JAR,应用程序可能会抛出一些错误

  3. # 3 楼答案

    NoClassDefFoundError表示类装入器找不到org.springframework.orm.hibernate3.support.HibernateDaoSupport依赖的类。并不是说HibernateDaoSupport本身缺失了。找到缺少哪个依赖项的最佳方法是查看^{}的导入部分

    您的类路径中似乎缺少org.springframework.dao