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> </リスナー>
どんな助けも大歓迎です。
/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)でサーバー固有のライブラリを自動的に取得します。
これらの指示に従うと、問題が何であるかを見つけるのに役立つことがわかりました。私にとって、それはキラーであり、何が壊れているのか知らなかった。
リンクから引用
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
このエラーは、アプリをコンパイルしたJDKがTomcat JVMと異なる場合に発生しました。 Tomcatマネージャーがjvm 1.6.0を実行していることを確認しましたが、アプリはJava 1.7.0の下でコンパイルされました。
Javaをアップグレードし、起動スクリプト(/etc/init.d/Tomcat)でJava_HOMEを変更すると、エラーはなくなりました。
トム・サリーバが提供する回答は非常に役立ちます。今日も同じエラーに苦労しました
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ギアで起こっていることを知るのに役立つかもしれません。