私は、Apache Tomcatサーバーで何が問題になったかを把握しようとして、過去6〜7時間苦労しています。すべてのプロジェクトで、jdk
バージョンが1.6
から1.8
に切り替えられました。
version conflict
を解決するために、Tomcatバージョンのコンパイル済みバージョンとJVMが同じであるかどうかを here からの助けを借りて確認しました。
同じパスエラーが発生する複数のコンテキストの場合、server.xml
の重複するContextタグを削除する必要があることを知っています。そのため、最初にServersプロジェクト(EclipseにApache Tomcat Serverを追加すると自動的に作成されます)をチェックインしますが、そこには何も見つかりません。そこで、ディレクトリ(Eclipse WorkSpace)metadata\.plugins\org.Eclipse.wst.server.core\tmp3\conf
を深く掘り下げ、 here の助けを借りて、重複するContextタグを削除しました。
新しいダイナミックWebプロジェクトを作成すると、すべてが正常に機能し、Webページを表示できるようになりました。しかし、jdkが変更された古いプロジェクトのHTML、XHTMLファイルのいずれかにアクセスしようとすると、このorg.Apache.catalina.LifecycleException
はポップアップし続け、サーバーは起動に失敗し、その結果、これらの重複したContextタグは引き続き構築されますサーバーを起動するたびに何度も起動します。
私の古いWebアプリケーションプロジェクトはどれも今は動作していないようです。
Java.util.concurrent.ExecutionException:org.Apache.catalina.LifecycleException:コンポーネントの起動に失敗しました[StandardEngine [Catalina] .StandardHost [localhost] .StandardContext [/ EdBurns_ChrisSchalk]] ..... SEVERE:起動時に子コンテナが失敗しましたJava.util.concurrent.ExecutionException:org.Apache.catalina.LifecycleException:コンポーネント[StandardEngine [Catalina] .StandardHost [localhost]]の起動に失敗しました....原因:Java.lang.RuntimeException:予期しない要素値の種類:0
これらのcontextタグがserver.xml。第二に、これらの古いWebプロジェクトを再び稼働状態に戻す方法は?
これにより、リクエストごとに複数のコンテキストタグが作成されなくなります
1)サーバーを停止
2) Tomcatの作業ディレクトリを消去
同様のエラーが発生したため、次の手順で修正しました。
<Context docBase=... />
注釈ベースのサーブレットを使用していない場合は、サーブレットの開始から注釈@ WebServlet( "/ YourServletName")を削除してください。この注釈はweb.xmlとマッピングを混同します。この注釈を削除すると、Tomcatサーバーは適切に動作します。
これは、ローカルMavenリポジトリの問題のようです。 (つまり、.m2フォルダー)は、破損した.jarファイルが原因である可能性があります
私にとって、次のアクションはこの問題を克服するのに役立ちました。
ローカルファイルシステムでディレクトリ.m2を削除(Mavenローカルリポジトリ)
Eclipseでプロジェクトを更新しました(Maven> Update Projectを選択)
Tomcatサーバーでアプリを再度実行しました。
正しいweb.xml構成でビルドすることを確認してください。Tomcat構成でweb.xmlを更新しましたが、うまくいきました。サンプル:-
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://Java.Sun.com/xml/ns/javaee" xmlns:web="http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>simulator</display-name>
<description>simulator app</description>
<!-- File upload -->
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<!-- Excel simulation -->
<display-name>simulator</display-name>
<description>simulator app</description>
<!-- File upload -->
<welcome-file-list>
<welcome-file>InsertPage.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>FileUploadServlet</servlet-name>
<servlet-class>clari5.Excel.FileUploadServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>FileUploadServlet</servlet-name>
<url-pattern>/excelSimulator/FileUploadServlet</url-pattern>
</servlet-mapping>
</web-app>
これを引き起こす可能性のある問題の1つは、WebServletアノテーション@WebServlet( "/ example")@WebServlet( "example")に/文字を入れるのを忘れたときです。
私の場合、jdkディレクトリのjre/lib/extにあるservlet-api.jarファイルはTomcatのservlet-api.jarファイルと競合し、jdkディレクトリのjre/lib/extにあるservlet-api.jarファイルを削除します。問題を解決できます。
次のスタックを使用している場合:サーバーバージョン:Apache Tomcat/9.0.21サーブレットバージョン:4.0 JSPバージョン:2.3
次に、<absolute-ordering />
をweb.xmlファイルに追加してみてください。したがって、ファイルは次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>spring-mvc-crud-demo</display-name>
<absolute-ordering />
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
......