web-dev-qa-db-ja.com

Tomcat 5.5でWebアプリをデプロイするときにエラーlistenerStartを解決する方法は?

Tomcat 5.5インスタンスにSpringとHibernateを使用するApache Wicket Webアプリケーションをデプロイしました。 Tomcat Managerインターフェースに移動すると、デプロイしたWebアプリケーションが実行されていないことがわかります。 [開始]を押すと、次のエラーメッセージが表示されます。 「FAIL-コンテキストパス/ spaghettiのアプリケーションを開始できませんでした」。

私のcatalina.logには以下が含まれています。

Apr 15, 2010 1:51:22 AM org.Apache.catalina.loader.WebappClassLoader validateJarFile  
INFO: validateJarFile(/var/lib/Tomcat5.5/webapps/spaghetti/WEB-INF/lib/jsp-api-6.0.16.jar)   - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/jsp/JspPage.class  
Apr 15, 2010 1:51:22 AM org.Apache.catalina.loader.WebappClassLoader validateJarFile  
INFO: validateJarFile(/var/lib/Tomcat5.5/webapps/spaghetti/WEB-INF/lib/servlet-api-6.0.16.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class  
Apr 15, 2010 1:51:24 AM org.Apache.catalina.core.StandardContext start  
SEVERE: Error listenerStart  
Apr 15, 2010 1:51:24 AM org.Apache.catalina.core.StandardContext start  
SEVERE: Context [/spaghetti] startup failed due to previous errors

Web.xmlからの抜粋:

 <listener> 
 <listener-class> 
 org.springframework.web.context.ContextLoaderListener 
 </ listener-class> 
 </リスナー> 

どんな助けも大歓迎です。

34
John
/var/lib/Tomcat5.5/webapps/spaghetti/WEB-INF/lib/jsp-api-6.0.16.jar
/var/lib/Tomcat5.5/webapps/spaghetti/WEB-INF/lib/servlet-api-6.0.16.jar

notにサーバー固有のライブラリを/WEB-INF/libに含める必要があります。それらをappserverの独自のライブラリに残します。クラスパスでの衝突のみにつながります。 /WEB-INF/lib(およびそれらのいずれかをそこに配置した場合はJRE/libおよびJRE/lib/ext内のすべてのappserver固有のライブラリを取り除きます。

Appserver固有のライブラリがwebappのライブラリに含まれる一般的な原因は、解決できないjavax.servletクラスのコンパイルエラーを修正する正しい方法だとスターターが考えることです。それらをwebappのライブラリに入れるのは間違った解決策です。コンパイル時にクラスパスでそれらを参照する必要があります。つまり、javac -cp /path/to/server/lib/servlet.jarなど、またはIDEを使用している場合は、サーバーをIDEに統合し、Webプロジェクトをサーバ。 IDEは、webappプロジェクトのクラスパス(buildpath)でサーバー固有のライブラリを自動的に取得します。

33
BalusC

これらの指示に従うと、問題が何であるかを見つけるのに役立つことがわかりました。私にとって、それはキラーであり、何が壊れているのか知らなかった。

http://mythinkpond.wordpress.com/2011/07/01/Tomcat-6-infamous-severe-error-listenerstart-message-how-to-debug-this-error/

リンクから引用

Tomcat 6以降では、デフォルトのロガーはLog4Jではなく「Java.util.logging」ロガーです。したがって、「log4j.properties」ファイルを追加しようとしている場合、これは機能しません。 Java utilsロガーは、以下に示すように「logging.properties」というファイルを探します。 http://Tomcat.Apache.org/Tomcat-6.0-doc/logging.html

デバッグの詳細を取得するには、WARの「/ WEB-INF/classes」フォルダーの下に「logging.properties」ファイルを作成します。これで設定は完了です。

そして今、Tomcatを再起動すると、すべてのデバッグが完全に表示されます!!!

サンプルのlogging.propertiesファイル:

org.Apache.catalina.core.ContainerBase.[Catalina].level = INFO
org.Apache.catalina.core.ContainerBase.[Catalina].handlers = Java.util.logging.ConsoleHandler
67
Tom Saleeba

このエラーは、アプリをコンパイルしたJDKがTomcat JVMと異なる場合に発生しました。 Tomcatマネージャーがjvm 1.6.0を実行していることを確認しましたが、アプリはJava 1.7.0の下でコンパイルされました。

Javaをアップグレードし、起動スクリプト(/etc/init.d/Tomcat)でJava_HOMEを変更すると、エラーはなくなりました。

10
Colin D

トム・サリーバが提供する回答は非常に役立ちます。今日も同じエラーに苦労しました

2015年4月28日7:53:27 PM org.Apache.catalina.core.StandardContext startInternal SEVERE:エラーlistenerStart

私は提案に従い、logging.propertiesファイルを追加しました。そして、以下が私の失敗の理由でした:

Java.lang.IllegalStateException:WARファイルが展開されていない場合、Webアプリのルートシステムプロパティを設定できない

この問題の根本的な原因は、web.xmlに追加したリスナー(Log4jConfigListener)でした。そして、リンク SEVERE:Exception org.springframework.web.util.Log4jConfigListener に従って、このリスナーは、展開されていないWAR内に追加できません。

誰かがこれがOpenShift JBossギアで起こっていることを知るのに役立つかもしれません。

1
Agry