ブラウザでhello worldを印刷する(mavenを使用しない)単純なSpring MVCアプリケーションを実行しています。これはEclipseの動的プロジェクトなので、必要なすべてのjarファイルをビルドパスとWEB-INF/lib
フォルダーの両方に配置します
2つのソリューションを試しましたが、どちらも機能しませんでした。
私が見つけた解決策:
これが私の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エラーが発生します
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の依存関係を追加する:
Eclipse WDTを使用し、未変更で以前に動作していたプロジェクトを使用する場合:
上記のソリューションで例外を解決する必要があります。
Spring-web.jarファイルを、WEB-INF/lib/spring-mvc/spring-web.jarではなく、WEB-INF/lib(WEB-INF/lib/spring-web.jar)に直接配置してください。
Mavenなしで単純なプロジェクトを作成する場合は、次の手順に従う必要があります。
必要なjarファイルをダウンロードします。 Spring 4を使用しているため、 リリースのインデックス からファイルをダウンロードしました
次に、このファイルをWebContent/WEB-INF/libフォルダー内に追加します。
Jarファイルをビルドパスに追加します(Eclipseの場合:プロジェクトを右クリック->プロパティ-> Java Build Path-> Add JARs ...)
これにより、org.springframework.web.context.ContextLoaderListener例外が回避されます。
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依存関係もすべて含まれています。必要に応じて追加または取得できます。
ここでのポイントは、既に実行中のプロジェクトがあり、そこからプレイできることです。私は最初にこのようなプロジェクトをすべて作成し、不要なものを消去してから、自分がしていることを追加してからそこから進みます。
幸運を!!!
これは依存関係の問題で、アーティファクトにはいくつかの依存関係がありません。 IntelliJでの私のソリューション:
プロジェクト名を右クリック->モジュール設定を開く->問題->不足している依存関係をアーティファクトに追加
サーバーを再起動します(私の場合はTomcatでした)
それが役に立てば幸い