どきっとするTomcatのエラー「致命的: 以前のエラーのためにコンテキストの起動が失敗しました」の徹底究明講座スタート
Filterの設定でエラーが起きたときに上記エラーが起きるのだが、具体的にはフィルタークラスはFQDN(パッケージ名を含む長いクラス名)で指定するため、パッケージ名やクラス名が間違っていると以下のようにエラーメッセージが出るはず。
■エラーログの例
致命的: フィルタ UrlRewriteFilter の起動中の例外です
java.lang.ClassNotFoundException: org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:249)
・・・中略
致命的: Error filterStart
2011/07/25 11:31:53 org.apache.catalina.core.StandardContext start
致命的: 以前のエラーのためにコンテキストの起動が失敗しました [/コンテキスト名]
■対策
まずクラス名が正しいことを確認する。正しかった場合はクラスパスに該当するクラスが含まれているかをチェックする。
コンテキストルート/WEB-INF/libにjarファイルを放りこんでおけば該当コンテキストのクラスパスに自動で含めてくれる。
これらのエラーはweb.xml読み込み時に発生するため、起動してすぐにエラーメッセージが出るはずである。
(他にコンテキストがなければの話だけど)
ほかにコンテキストが存在する場合エラーメッセージが流れてしまうので、「致命的」などのキーワードが出ている場所を探してみること!