私は 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 の構成の手順をスキップした可能性があるかどうかを知っている人はいますか?