4

私は spring3.1.1+hibernate3.6.0+tomcat7.0.29 + mysql5.5 を使用して Java Web 開発に取り組んでいますが、私のサーバーで実行した後、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) 

なぜ休止状態がサポートされていないと言われたのか理解できず、参照ライブラリと 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>
4

3 に答える 3

3

NoClassDefFoundErrororg.springframework.orm.hibernate3.support.HibernateDaoSupportクラスローダーが依存するクラスを見つけられないことを意味します。それHibernateDaoSupport自体が欠けているわけではありません。不足している依存関係を見つける最良の方法は、のインポート セクションを確認することです。HibernateDaoSupport

org.springframework.daoクラスパスにライブラリがないようです。

于 2012-09-23T16:15:41.137 に答える
1

これは、クラスspring-ormを持つライブラリに異なるバージョンのjarがあるためだと思います。org.springframework.orm.hibernate3.support.HibernateDaoSupport

あなたのlibにspring-orm3.1jarを追加します。jarのダウンロードリンクは下部にあります。

NoClassDefFoundError一般に、クラスを持つjarの、googleを取得した場合。Maven中央リポジトリはそれを行うのに適した場所です。

Spring aop、jdbc、およびトランザクションjarも異なるバージョンです(3.1.1ではなく3.0.7)。常に同じバージョンのjarファイルを使用してください。異なるバージョンのjarを使用すると、アプリケーションがエラーをスローする可能性があります。

于 2012-09-24T02:35:39.593 に答える
0

14.3 休止状態

Spring 環境での Hibernate 3 のカバーから始め、それを使用して Spring が O/R マッパーを統合するために採用するアプローチを示します。このセクションでは、多くの問題を詳細に説明し、DAO 実装とトランザクション境界のさまざまなバリエーションを示します。これらのパターンのほとんどは、サポートされている他のすべての ORM ツールに直接変換できます。この章の次のセクションでは、その他の ORM テクノロジについて説明し、簡単な例を示します。

注: Spring 3.0 の時点で、Spring には Hibernate 3.2 以降が必要です。

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

Hibernate のバージョンが古すぎます。

質問を読み直すと、Hibernate 3.6 を使用していると言いますがhibernate3.jar、依存関係をリストしています。それはどれですか?

于 2012-09-24T14:34:03.783 に答える