展開されたTomcat 7 War Applicationは、Noclassdeffounderrorエラーをスローします
-
12-10-2019 - |
質問
私はハローワールドタイプのWebアプリケーションに取り組んでいます。 Eclipse HeliosをIDEとして、Maven 2を依存関係に処理し、展開およびテストするためにローカルに実行されるTomcat 7サーバーを使用しています。アプリケーションはSpring MVCベースであり、データ管理にHibernateを使用しています。
プロジェクトを戦争ファイルに正常にパッケージ化できます。 Tomcatで戦争を展開すると、ログに次のエラーが報告されています。
重度:コンテキストの初期化に失敗しました
org.springframework.beans.factory.beancreationexception:servletcontextリソースで定義された名前「hibernatesessionfactory」でbeanを作成するエラー[/web-inf/spring-servlet.xml]:init methodの呼び出しが失敗しました。ネストされた例外はjava.lang.noclassdeffounderrorです:クラスorg.hibernate.cfg.annotationConfigurationを初期化できませんでした
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338) at 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
この情報に基づいて、これはClassPath構成の問題である可能性があると思います。 Tomcat 7で読んだドキュメントから、Tomcatは「/web-inf/lib」フォルダーでJARファイルを利用できるはずです。 WebAppのLIBフォルダーのJARファイルを認識するために、Tomcatの構成のステップをスキップしたかどうかを知っていますか?
解決
これは一般的なアドバイスであることに気付きましたが、過去にTomcatとJettyの両方でこのような問題がありました。 EclipseでM2Eclipse POMエディターを使用して、「依存関係階層」をクリックして、すべてのすべてを慎重に確認することから始めます。 推移的 依存関係。