1

私は hello-world タイプの Web アプリケーションに取り組んでいます。IDE として Eclipse Helios を使用し、依存関係を処理するために Maven 2 を使用し、デプロイとテストのためにローカルで実行される Tomcat 7 サーバーを使用しています。アプリケーションは Spring MVC ベースで、データ管理に Hibernate を使用します。

プロジェクトを WAR ファイルに正常にパッケージ化できます。Tomcat に WAR をデプロイすると、ログに次のエラーが報告されます。

SEVERE: コンテキストの初期化に失敗しました

org.springframework.beans.factory.BeanCreationException: ServletContext リソース [/WEB-INF/spring-servlet.xml] で定義された 'hibernateSessionFactory' という名前の Bean の作成中にエラーが発生しました: init メソッドの呼び出しに失敗しました。ネストされた例外は java.lang.NoClassDefFoundError: でクラス org.hibernate.cfg.AnnotationConfiguration を初期化できませんでした

org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473) at org.springframework.beans.factory. support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) など...

POM に正しい依存関係が含まれていることを確認したところ、次のようになりました。

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-annotations</artifactId>
    <version>3.4.0.GA</version>
    <type>jar</type>
    <optional>false</optional>
</dependency>

パッケージ化された WAR ファイルに、エラーで言及されているクラス (org.hibernate.cfg.AnnotationConfiguration) を持つ必要な JAR ファイルがあることを確認しました。

./Tomcat 7/webapps/helloworld/WEB-INF/lib/hibernate-annotations-3.4.0.GA.jar

この情報に基づいて、これはクラスパス構成の問題である可能性があると考えています。Tomcat 7 で読んだドキュメントによると、Tomcat は「/WEB-INF/lib」フォルダー内の JAR ファイルを利用できるはずです。Tomcat が webapp の lib フォルダーにある JAR ファイルを認識できるようにするために、Tomcat の構成の手順をスキップした可能性があるかどうかを知っている人はいますか?

4

1 に答える 1

3

これは一般的なアドバイスであることは承知していますが、過去に Tomcat と Jetty の両方でこのような同様の問題が発生しました。これは、依存関係のバージョンが複数または間違っていたためです。まず、Eclipse で M2Eclipse POM エディターを使用し、[依存関係階層] をクリックして、すべての推移的な依存関係を注意深く確認します。

于 2011-01-24T16:06:22.270 に答える