基本的なJSPを作成/実行しようとすると、次のエラーが発生しました。他の人々も同様の問題を抱えていることがわかりましたが、手元にある問題の解決策を見つけることができませんでした。助けていただければ幸いです!
SEVERE: A child container failed during start
Java.util.concurrent.ExecutionException: org.Apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/SimpleServletProject]]
at Java.util.concurrent.FutureTask.report(FutureTask.Java:122)
at Java.util.concurrent.FutureTask.get(FutureTask.Java:192)
at org.Apache.catalina.core.ContainerBase.startInternal(ContainerBase.Java:1123)
at org.Apache.catalina.core.StandardHost.startInternal(StandardHost.Java:816)
at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150)
at org.Apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.Java:1575)
at org.Apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.Java:1565)
at Java.util.concurrent.FutureTask.run(FutureTask.Java:266)
at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1142)
at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:617)
at Java.lang.Thread.run(Thread.Java:745)
Caused by: org.Apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/SimpleServletProject]]
at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:154)
... 6 more
Caused by: Java.lang.NoClassDefFoundError: HttpServletRequest
at Java.lang.Class.getDeclaredMethods0(Native Method)
at Java.lang.Class.privateGetDeclaredMethods(Class.Java:2693)
at Java.lang.Class.getDeclaredMethods(Class.Java:1967)
at org.Apache.catalina.util.Introspection.getDeclaredMethods(Introspection.Java:127)
at org.Apache.catalina.startup.WebAnnotationSet.loadMethodsAnnotation(WebAnnotationSet.Java:287)
at org.Apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.Java:140)
at org.Apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.Java:65)
at org.Apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.Java:415)
at org.Apache.catalina.startup.ContextConfig.configureStart(ContextConfig.Java:892)
at org.Apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.Java:386)
at org.Apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.Java:117)
at org.Apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.Java:90)
at org.Apache.catalina.core.StandardContext.startInternal(StandardContext.Java:5380)
at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150)
... 6 more
Caused by: Java.lang.ClassNotFoundException: HttpServletRequest
at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1720)
at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1571)
... 20 more
Jan 22, 2015 9:04:06 PM org.Apache.catalina.core.ContainerBase startInternal
SEVERE: A child container failed during start
Java.util.concurrent.ExecutionException: org.Apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
at Java.util.concurrent.FutureTask.report(FutureTask.Java:122)
at Java.util.concurrent.FutureTask.get(FutureTask.Java:192)
at org.Apache.catalina.core.ContainerBase.startInternal(ContainerBase.Java:1123)
at org.Apache.catalina.core.StandardEngine.startInternal(StandardEngine.Java:300)
at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150)
at org.Apache.catalina.core.StandardService.startInternal(StandardService.Java:443)
at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150)
at org.Apache.catalina.core.StandardServer.startInternal(StandardServer.Java:739)
at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150)
at org.Apache.catalina.startup.Catalina.start(Catalina.Java:689)
at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:62)
at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
at Java.lang.reflect.Method.invoke(Method.Java:483)
at org.Apache.catalina.startup.Bootstrap.start(Bootstrap.Java:321)
at org.Apache.catalina.startup.Bootstrap.main(Bootstrap.Java:455)
Caused by: org.Apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:154)
at org.Apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.Java:1575)
at org.Apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.Java:1565)
at Java.util.concurrent.FutureTask.run(FutureTask.Java:266)
at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1142)
at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:617)
at Java.lang.Thread.run(Thread.Java:745)
Caused by: org.Apache.catalina.LifecycleException: A child container failed during start
at org.Apache.catalina.core.ContainerBase.startInternal(ContainerBase.Java:1131)
at org.Apache.catalina.core.StandardHost.startInternal(StandardHost.Java:816)
at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150)
... 6 more
Jan 22, 2015 9:04:06 PM org.Apache.catalina.startup.Catalina start
SEVERE: The required Server component failed to start so Tomcat is unable to start.
org.Apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]
at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:154)
at org.Apache.catalina.startup.Catalina.start(Catalina.Java:689)
at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:62)
at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
at Java.lang.reflect.Method.invoke(Method.Java:483)
at org.Apache.catalina.startup.Bootstrap.start(Bootstrap.Java:321)
at org.Apache.catalina.startup.Bootstrap.main(Bootstrap.Java:455)
Caused by: org.Apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]]
at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:154)
at org.Apache.catalina.core.StandardServer.startInternal(StandardServer.Java:739)
at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150)
... 7 more
Caused by: org.Apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]]
at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:154)
at org.Apache.catalina.core.StandardService.startInternal(StandardService.Java:443)
at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150)
... 9 more
Caused by: org.Apache.catalina.LifecycleException: A child container failed during start
at org.Apache.catalina.core.ContainerBase.startInternal(ContainerBase.Java:1131)
at org.Apache.catalina.core.StandardEngine.startInternal(StandardEngine.Java:300)
at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150)
... 11 more
Jan 22, 2015 9:04:06 PM org.Apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["http-bio-8080"]
Jan 22, 2015 9:04:06 PM org.Apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["ajp-bio-8009"]
Jan 22, 2015 9:04:06 PM org.Apache.catalina.core.StandardService stopInternal
INFO: Stopping service Catalina
Jan 22, 2015 9:04:06 PM org.Apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["http-bio-8080"]
Jan 22, 2015 9:04:06 PM org.Apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["ajp-bio-8009"]
Warファイルの他のライブラリとともにservlet-api.jar
をパッケージ化しておく必要があります。これを確認するには、warファイルを開き、WEB-INF/libフォルダーに移動します。
理想的には、servlet-api jarを提供しないでください。コンテナ(Tomcatの場合)は、デプロイ時にアプリケーションに提供する役割を果たします。同様に提供しようとすると、バージョンの不一致などが原因で問題が発生します。ベストプラクティスは、パッケージ化を避けることです。 WEB-INF/libから削除します。
追加情報
パッケージ化にmavenを使用している場合は、provided
タグを依存関係に追加するだけで、mavenは最終warファイルにパッケージ化しないようにします。何かのようなもの
<dependency>
<artifact>..
<group> ...
<version> ...
<scope>provided</scope>
</<dependency>
同様の問題に直面しましたが、これは、WebServlet Pathを.Javaファイルとweb.xmlに記述したために発生しました。任意の場所からそれを削除すると、私にとってはうまくいきます。
.Javaファイル内
@WebServlet("/index1.jsp")
およびweb.xml内
<servlet>
<servlet-name>Logout</servlet-name>
<servlet-class>tpc.Logout</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Logout</servlet-name>
<url-pattern>/index1.jsp</url-pattern>
</servlet-mapping>
Webアプリケーションの/ WEB-INF/libにservlet-api.jarファイルのようなservletcontainer固有のライブラリがあります。これは正しくない。
それらをすべて削除します。
/ WEB-INF/libには、サーブレットコンテナではなく、webappに固有のライブラリのみを含める必要があります。 servletcontainer(Tomcatなど)は、servletcontainer固有のライブラリをすでに提供しているはずです。
異なるmake/versionの任意のservletcontainerからライブラリを提供する場合、webappはそれらのライブラリの元の場所とは異なるmake/versionのservletcontainerで実行できないため、この種の問題が発生します。 。
解決方法: EclipseでEclipseプロパティでプロジェクトを右クリック-> Java Build Path-> Add library-> Server Runtime Library-> Apache Tomcat
Im Mavenプロジェクト:-
pom.xmlファイルに次の行を追加します
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${default.javax.servlet.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>${default.javax.servlet.jsp.version}</version>
<scope>provided</scope>
</dependency>
Servers(またはserver.xmlを含むServers1、Servers2)という名前のプロジェクトを削除し、Package Explorer(workspace)で見つけます。
Eclipseからサーバーを削除: Window> Preferences> Server> Runtime Environmentに移動し、ここでEclipseから使用しているサーバーを削除して再度追加します(これによりEclipseに新しいサーバープロジェクトフォルダーが作成されます)、
プロジェクトからサーバーを削除:プロジェクト内のサーバーも削除し(ビルドパス>構成パス> Javaビルドパス)、再度追加します。
server.xmlにマルチコンテキストを持たない新しいサーバープロジェクトがあり、server.xmlの重複パスを削除するだけでexixtingの問題は解決しましたが、サーバーが起動しました(Apache Tomcat v7)と正常に動作しました
そして、これが良い習慣であるかどうかわからない、私はプログラミングの初心者です。
私はhttpサーブレットを試してみて、重複した@ WebServletを書くときにこの問題を見つけました、この問題に遭遇しました。削除または変更した後@ WebServlet動作している値。
1。クラス
@WebServlet("/display")
public class MyFirst extends HttpServlet {
2。クラス
@WebServlet("/display")
public class MySecond extends HttpServlet {
java_HOMEが1.7以下に設定されているかどうかを確認してください。 Tomcat 7はjdk 1.8と互換性がないため
これは私のために働いた
これは私のために働いたものです:
1)commons-logging.jarをWEB-INF/libフォルダーに追加します
2)このjarをMaven依存関係として追加します。これをpom.xmlに追加します。
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
3)Mavenインストール
4)サーバーを実行します。
それが役に立てば幸い。
互換性のないJavaバージョンとTomcatバージョンが原因でこの問題が発生する場合があります。両方の互換バージョンを選択してください。
同様のログで同様の問題に直面しました。 Apache Tomcat 7でJDK 1.6を使用していました。Java_homeを1.7に設定すると、問題が解決しました。
同じ問題に直面した。 JREを正しい1.8バージョンに変更し、Mavenのクリーンアップとビルドを実行して問題を解決しました。プロジェクトファセットを変更し、正しいパスを確認する必要がある場合があります。
この問題は、Mavenリポジトリーの破損が原因の場合もあります。
Eclipseを使用しているときに、SEVERE: A child container failed during start
メッセージを時々確認します。私のEclipseワークスペースにはいくつかのプロジェクトがあります。一部のプロジェクトには、共通の外部依存関係があります。 Mavenリポジトリが空の場合(または新しい依存関係をpom.xml
ファイルに追加した場合)、Eclipseはpom.xml
で指定されたライブラリのMavenリポジトリへのダウンロードを開始します。そして、Eclipseはそれを行います並行してワークスペースのいくつかのプロジェクトに対して。複数のEclipseスレッドが同じファイルをMavenリポジトリの同じ場所に同時にダウンロードしている可能性があります。その結果、このファイルは破損します。
したがって、これが問題の解決方法です。
rm -rf $HOME/.m2
)。mvn package
を実行します。各プロジェクトでコマンドを実行することが重要ですone-by-one、並列ではありません。したがって、毎回Mavenのインスタンスが1つだけ実行されるようにします。私のプロジェクトでも同様の問題が見られました。クラス定義が欠落しているjarをTomcatのlibディレクトリに貼り付けると、問題が解決しました。
AWS依存関係を追加し、このエラーが発生しました。 POMから削除すると、エラーはなくなります。おそらく同じ状況になるかもしれません。