web-dev-qa-db-ja.com

TomcatおよびSpring Web-クラスが見つかりません例外org.springframework.web.context.ContextLoaderListener

EclipseでTomcatを起動しようとすると、次の例外が発生します([プロジェクト]を右クリックし、[実行]-> [サーバーで実行]を選択)。

SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
Java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
    at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1676)
    at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1521)
    at org.Apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.Java:415)
    at org.Apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.Java:397)
    at org.Apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.Java:118)
    at org.Apache.catalina.core.StandardContext.listenerStart(StandardContext.Java:4660)
    at org.Apache.catalina.core.StandardContext$1.call(StandardContext.Java:5226)
    at org.Apache.catalina.core.StandardContext$1.call(StandardContext.Java:5221)
    at Java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.Java:303)
    at Java.util.concurrent.FutureTask.run(FutureTask.Java:138)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.Java:886)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:908)
    at Java.lang.Thread.run(Thread.Java:662)
Jun 12, 2011 8:46:11 PM org.Apache.catalina.core.StandardContext listenerStart

Maven(m2Eclipse)を使用してプロジェクトを構築しています。 Springライブラリに必要な依存関係を追加しました。最終的なアーティファクト(クラスを含む)のlibディレクトリにspring-web.jarファイルがあります。 IDEの外部にアプリケーションをデプロイすると、正常に機能します。

これがなぜ起こるかについてのポインタは非常に高く評価されるでしょう。

33
Devanath Rao

数日前、Eclipse Indigoでm2Eclipse(m2Eclipse-extras経由で利用可能なWTP統合アドオンなし)で同じ問題に直面しました。 Maven Webモジュールを作成し、動的Webモジュールファセットを手動で追加しました。 Eclipse WST Tomcatサーバーにデプロイすると、プロジェクトが公開されたときにMavenの依存関係がサーバーにプッシュされないように見えました。

解決策は簡単でした。プロジェクトエクスプローラーでWebプロジェクトを右クリックし、[プロパティ]を選択します。プロジェクトのプロパティで、「展開アセンブリ」を選択します。

デプロイメントアセンブリプロパティページには、Eclipseによってサーバーにアセンブルされたアーティファクトとして公開されるコンテンツが表示されます。すべてのMaven依存関係も公開することをEclipseに伝える必要があります。

これを行うには、「追加」ボタンをクリックし、「Javaビルドパスエントリ」を選択します。 [次へ]をクリックし、[Maven依存関係]を選択します。これにより、EclipseがWSTサーバーにプロジェクトを公開するときに、Maven依存関係JARファイルがlibフォルダーに公開されます。

このアプローチは私のために働いた。

80
Yohan Liyanage

サーバーデプロイメント用のwarファイルにEclipseが何を配置するかを確認する最も簡単な方法は、右クリック->エクスポート-> WARファイルを実行することです。その後、これを解凍して、中身を確認できます。

「.settings/org.Eclipse.wst.common.component」を開くと、Webツールwebappの定義が表示され、次のようなものが表示されます。

<project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="MyApp">
    <wb-resource deploy-path="/" source-path="/src/main/webapp"/>
    <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/Java"/>
    <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
    <property name="Java-output-path" value="target/classes"/>
    <property name="context-root" value="MyApp"/>
</wb-module>
</project-modules>

Eclipseのビルドパスで、ライブラリに「Maven Dependencies」が表示されていることを確認します。 m2EclipseプラグインとWSTの最新バージョンは、Mavenの依存関係を自動的に取得し、warファイル内のWEB-INF/libにドロップします。

最後になりましたが、SpringSource Tool Suite(STS)の最新版の入手を検討することをお勧めします。 STSには、最新のm2EclipseとWSTのバンドルなど、多くの優れた機能があります。 Tomcat(またはTomcatのバージョン)で引き続き使用できます。Webアプリケーションをすばやく動作させるためのアーキタイプとチュートリアルがいくつかあります。

楽しい!

4
Al Baker

これらのファイル(使用しているリリース)を追加します

Apache-Tomcat-8.0.35\lib 

フォルダ(およびサーバーを再起動):

spring-aop-4.0.1.RELEASE.jar
spring-beans-4.0.1.RELEASE.jar
spring-context-4.0.1.RELEASE.jar
spring-core-4.0.1.RELEASE.jar
spring-expression-4.0.1.RELEASE.jar
spring-web-4.0.1.RELEASE.jar
spring-webmvc-4.0.1.RELEASE.jar
0
Shahriar