web-dev-qa-db-ja.com

java.lang.ClassNotFoundException:Eclipseのorg.springframework.web.context.ContextLoaderListener

ブラウザでhello worldを印刷する(mavenを使用しない)単純なSpring MVCアプリケーションを実行しています。これはEclipseの動的プロジェクトなので、必要なすべてのjarファイルをビルドパスとWEB-INF/libフォルダーの両方に配置します

2つのソリューションを試しましたが、どちらも機能しませんでした。

私が見つけた解決策:

  1. tomcat作業ディレクトリのクリーニング
  2. libにspring-mvc/spring-web.jar jarファイルを配置する

これが私のweb.xmlです

<?xml version="1.0" encoding="UTF-8"?>
<web-app>

    <display-name>Spring MVC Application</display-name>

    <servlet>
        <servlet-name>mvc-dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>mvc-dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

</web-app>

contextLoaderListenerの設定にタイプミスはありませんが、問題は何か、他の解決策はありますか

Jan 20, 2014 8:16:39 PM org.Apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Jan 20, 2014 8:16:39 PM org.Apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.11
Jan 20, 2014 8:16:40 PM org.Apache.catalina.core.StandardContext listenerStart
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:4618)
    at org.Apache.catalina.core.StandardContext$1.call(StandardContext.Java:5184)
    at org.Apache.catalina.core.StandardContext$1.call(StandardContext.Java:5179)
    at Java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at Java.util.concurrent.FutureTask.run(Unknown Source)
    at Java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at Java.lang.Thread.run(Unknown Source)

Jan 20, 2014 8:16:40 PM org.Apache.catalina.core.StandardContext listenerStart
SEVERE: Skipped installing application listeners due to previous error(s)
Jan 20, 2014 8:16:40 PM org.Apache.catalina.core.StandardContext startInternal
SEVERE: Error listenerStart
Jan 20, 2014 8:16:40 PM org.Apache.catalina.core.StandardContext startInternal
SEVERE: Context [/SpringSample] startup failed due to previous errors
Jan 20, 2014 8:16:40 PM org.Apache.coyote.AbstractProtocolHandler start
INFO: Starting ProtocolHandler ["http-bio-8081"]
Jan 20, 2014 8:16:40 PM org.Apache.coyote.AbstractProtocolHandler start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Jan 20, 2014 8:16:40 PM org.Apache.catalina.startup.Catalina start
INFO: Server startup in 4010 ms

最終的に、サービスのロードに失敗すると404エラーが発生します

11
Sudip7

Eclipseでも同じ問題が発生しました。 Mavenクリーンインストールを実行して、生成されたWARファイルをTomcat webappフォルダーに移動すると、問題なく実行されます。ただし、デバッグするためにEclipseで実行したいのですが、次のエラーがスローされます。

SEVERE: Error configuring application listener of class   org.springframework.web.context.ContextLoaderListener

次のブログ投稿を見つけるまで、グーグルで検索しました。

http://commonexceptions.blogspot.com/2014/01/Java.html

著者が説明するように:

この例外は、Mavenの依存関係をビルドパスに追加しなかったときに発生しました。私はEclipseをmavenで使用していたため、以下で説明するように、ビルドパスにmavenの依存関係を含める必要がありました。

ソリューションの投稿を参照してください。これは、単純なEclipse Deployment Assembly構成修正です。約30秒かかったので、今度はEclipseでSpring webappをデバッグできます。

投稿からの関連手順は次のとおりです。

プロジェクトWeb展開アセンブリにMavenの依存関係を追加する:

  • プロジェクトのプロパティを開きます(例:プロジェクトエクスプローラで、プロジェクト名を右クリックして[プロパティ]を選択します)。
  • 「展開アセンブリ」を選択します。
  • 右側のナビゲーションの[追加...]ボタンをクリックします。
  • ディレクティブタイプのメニューから[Javaビルドパスエントリ]を選択し、[次へ]をクリックします。
  • Java Build Path Entriesメニューから[Maven Dependencies]を選択します
  • 「完了」をクリックします。
  • これで、「Maven Dependencies」がWeb Deployment Assemblyに追加され、実行されるはずです。

Eclipse WDTを使用し、未変更で以前に動作していたプロジェクトを使用する場合:

  • Tomcatが実行されている場合は停止します
  • [サーバー]ビューを開きます。ウィンドウで[ビューを表示]を選択し、[その他]> [サーバー]> [サーバー]を選択します
  • Tomcatサーバーを右クリックし、「Tomcat作業ディレクトリを削除」を選択します。
  • Tomcatサーバーを右クリックし、「クリーン」を選択します
  • Tomcatサーバーを再起動します

上記のソリューションで例外を解決する必要があります。

25
AllanT

Spring-web.jarファイルを、WEB-INF/lib/spring-mvc/spring-web.jarではなく、WEB-INF/lib(WEB-INF/lib/spring-web.jar)に直接配置してください。

2
Rida BENHAMMANE

Mavenなしで単純なプロジェクトを作成する場合は、次の手順に従う必要があります。

  1. 必要なjarファイルをダウンロードします。 Spring 4を使用しているため、 リリースのインデックス からファイルをダウンロードしました

  2. 次に、このファイルをWebContent/WEB-INF/libフォルダー内に追加します。

  3. Jarファイルをビルドパスに追加します(Eclipseの場合:プロジェクトを右クリック->プロパティ-> Java Build Path-> Add JARs ...)

これにより、org.springframework.web.context.ContextLoaderListener例外が回避されます。

1
atish shimpi

Mavenを起動して実行している場合、Spring MVCを学習するのに役立つ非常に良い方法があります。

もしそうなら:あなたのコマンドラインに移動します(Cygwin)私が使用しています...

mvn archetype:generate「アーキタイプ番号」を要求します。 For you ... 16を入力します。メインパッケージであるグループIDを入力します。プロジェクト名であるアーティファクトIDを入力します。 SNAP-SHOT --- Enterキーを押すだけでバージョンと同じになります。パッケージ-グループID名と同じです。例:com.spring文字「y」を入力して確認し、Enterキーを押します。ワークスペースディレクトリに移動したら、上記のすべてを実行します。そのようにして作成されます。 「mvn Eclipse:eclipse」を実行して、EclipseにロードすることができますORインポートするだけです。既存のプロジェクトをインポートする昔ながらの方法が好きです。

すべての設定(Javaベース)に関しては、すべてが「既に」設定されており、これはあなたに適しています。 pom.xmlに必要なMaven依存関係もすべて含まれています。必要に応じて追加または取得できます。

ここでのポイントは、既に実行中のプロジェクトがあり、そこからプレイできることです。私は最初にこのようなプロジェクトをすべて作成し、不要なものを消去してから、自分がしていることを追加してからそこから進みます。

幸運を!!!

1
helpfulGuest

これは依存関係の問題で、アーティファクトにはいくつかの依存関係がありません。 IntelliJでの私のソリューション:

プロジェクト名を右クリック->モジュール設定を開く->問題->不足している依存関係をアーティファクトに追加

サーバーを再起動します(私の場合はTomcatでした)

それが役に立てば幸い

1