wake-up-neo.com

Ein untergeordneter Container ist beim Start von Java.util.concurrent.ExecutionException fehlgeschlagen

Ich habe versucht, eine grundlegende JSP zu erstellen/auszuführen, und der folgende Fehler ist aufgetreten. Ich habe gesehen, dass andere Leute ähnliche Probleme hatten, jedoch konnte ich noch keine Lösung für das vorliegende Problem finden (oder es nicht richtig implementieren). Jede Hilfe wäre dankbar!

    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"]
20
zzz2991

Ich denke, Sie werden hier ein ähnliches Problem finden:

Java.lang.ClassNotFoundException: HttpServletRequest

Und wahrscheinlich auch zu antworten .. Hoffe das hilft. 

18
Naman

Sie müssen den servlet-api.jar zusammen mit den anderen Bibliotheken in Ihrer Kriegsdatei gepackt haben. Sie können dies überprüfen, indem Sie Ihre Kriegsdatei öffnen und zum Ordner WEB-INF/lib navigieren. 

Idealerweise sollten Sie das Servlet-Api-Glas nicht bereitstellen. Der Container, in Ihrem Fall Tomcat, ist dafür verantwortlich, ihn zum Zeitpunkt der Bereitstellung für Ihre Anwendung bereitzustellen. Wenn Sie versuchen, es ebenfalls bereitzustellen, treten Probleme auf, da die Versionen nicht übereinstimmen. Es empfiehlt sich, das Paket nicht zu verpacken. Entfernen Sie es aus der WEB-INF/lib.

Zusätzliche Information

Wenn Sie maven für Ihre Verpackung verwenden, fügen Sie einfach das provided-Tag mit der Abhängigkeit hinzu, und maven stellt sicher, dass es nicht in der endgültigen Kriegsdatei verpackt wird. So etwas wie

<dependency>
    <artifact>..
    <group> ...
    <version> ...
    <scope>provided</scope>
</<dependency>
7
Saif Asif

Ich hatte ein ähnliches Problem und es wurde verursacht, weil ich WebServlet Path in der .Java-Datei sowie in der web.xml geschrieben hatte. Das Entfernen von einem beliebigen Ort funktioniert für mich gut.

In der Java-Datei

@WebServlet("/index1.jsp")

und in 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>
4
Shubham Gupta

Ihre Webapp verfügt über servletcontainer-spezifische Bibliotheken wie die Datei servlet-api.jar in/WEB-INF/lib. Das ist nicht richtig.

Entferne sie alle. 

Die/WEB-INF/lib sollte nur die für die Webanwendung spezifischen Bibliotheken enthalten, nicht den Servletcontainer. Der Servletcontainer (wie Tomcat) sollte die Servletcontainer-spezifischen Bibliotheken bereits bereitstellen. 

Wenn Sie Bibliotheken von einem beliebigen Servletcontainer eines anderen Herstellers oder einer anderen Version bereitstellen, werden Sie auf diese Art von Problemen stoßen, da Ihre Webapp nicht auf einem Servletcontainer mit einem anderen Make/einer anderen Version ausgeführt werden kann als dem, aus dem diese Bibliotheken stammen .

So lösen Sie: In Eclipse Klicken Sie mit der rechten Maustaste auf das Projekt in Eclipse-Eigenschaften -> Java-Erstellungspfad -> Bibliothek hinzufügen -> Serverlaufzeitbibliothek -> Apache Tomcat

Im Maven-Projekt: -

fügen Sie folgende Zeile in der Datei pom.xml hinzu

<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>
4
Mahender Yadav

Löschen Sie das Projekt mit dem Namen Servers (oder Servers1, Servers2, das Ihre server.xml enthält) und suchen Sie im Package Explorer (Arbeitsbereich) nach. 

Server aus Eclipse entfernen: Gehen Sie zu Fenster> Voreinstellungen> Server> Laufzeitumgebung. Entfernen Sie hier den Server, den Sie von Eclipse verwenden, und fügen Sie ihn erneut hinzu (dadurch wird ein neuer Serverprojektordner in Eclipse erstellt.) 

Entfernen Sie den Server aus dem Projekt: Entfernen Sie außerdem den Server in Ihrem Projekt (Erstellungspfad> Konfigurationspfad> Java-Erstellungspfad) und fügen Sie ihn erneut hinzu.

sie haben jetzt ein neues Server-Projekt erhalten, das nicht über mehrere Kontexte in seiner server.xml verfügt. Durch das Löschen doppelten Pfads in server.xml wurde das Exixting-Problem behoben, der Server wurde jedoch weiterhin gestartet, indem der Server gestartet (Apache Tomcat v7) und normal ausgeführt wurde

Und ich weiß nicht, ob dies eine gute Praxis ist oder nicht, ich bin ein Anfänger in der Programmierung. 

3
Jov

Ich versuche es mit http-Servlet und finde dieses Problem, wenn ich duplizierte @WebServlet schreibe, die mit diesem Problem aufgetreten sind. Nachdem ich @WebServlet value entfernt habe, funktioniert es.

1.Klasse

@WebServlet("/display")
public class MyFirst extends HttpServlet {

2.Klasse

@WebServlet("/display")
public class MySecond extends HttpServlet {
2
java.nazif

prüfen Sie, ob Java_HOME auf 1.7 oder darunter eingestellt ist. weil Tomcat 7 nicht mit jdk 1.8 kompatibel ist 

Das hat bei mir funktioniert

1
Raj Shekar

Das hat bei mir funktioniert:

1) Fügen Sie commons-logging.jar zum Ordner WEB-INF/lib hinzu

2) Fügen Sie dieses Gefäß als Mavenabhängigkeit hinzu, z. Fügen Sie dies der pom.xml hinzu: 

 <dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
 </dependency>

3) Maven installieren

4) Führen Sie den Server aus.

Ich hoffe es hilft.

1
João Matos
  1. download commons-logging-1.1.1.jar .
  2. Gehen Sie zu Ihrem Projekt, Erstellungspfad, Konfigurieren Sie Erstellungspfad, Java-Erstellungspfad.
  3. Fügen Sie externe Jars hinzu. Fügen Sie commons-logging-1.1.1.jar hinzu
  4. klicken Sie auf Anwenden, ok
  5. Gehen Sie zu Projekt, Eigenschaften, Bereitstellungsassemblierung, klicken Sie auf Hinzufügen, Java-Buildpfadeinträge, und wählen Sie anschließend Commons-Protokollierungsglas aus.
  6. Server löschen, sauberes Projekt löschen, Server hinzufügen, Projekt ausführen.
0
In Dra_ 0509

Dieses Problem tritt einige Zeit aufgrund einer inkompatiblen Java-Version und Tomcat-Version auf. Wählen Sie die kompatible Version von beiden. 

0
anand mishra

Ich hatte ähnliche Probleme mit ähnlichen Protokollen. Ich habe JDK 1.6 mit Apache Tomcat 7 verwendet. Durch die Einstellung von Java_home auf 1.7 wurde das Problem behoben.

0
jetty

Konfrontiert mit demselben Problem. Die JRE wurde in die korrekte 1.8-Version geändert, und das Problem wurde durch ein Maven Clean und Build behoben. Möglicherweise müssen Sie die Projektfacette ändern und den korrekten Pfad überprüfen.

0
Arindam

Dieses Problem kann auch durch ein defektes Maven-Repository verursacht werden.

Ich beobachte die SEVERE: A child container failed during start-Nachricht gelegentlich, wenn ich mit Eclipse arbeite. Mein Eclipse-Arbeitsbereich enthält mehrere Projekte. Einige der Projekte haben gemeinsame externe Abhängigkeiten. Wenn das Maven-Repository leer ist (oder ich neue Abhängigkeiten in pom.xml-Dateien hinzufüge), beginnt Eclipse, Bibliotheken herunterzuladen, die in pom.xml angegeben sind, in das Maven-Repository. Und das erledigt Eclipse parallel für mehrere Projekte im Arbeitsbereich. Es kann vorkommen, dass mehrere Eclipse-Threads dieselbe Datei gleichzeitig an dieselbe Stelle im Maven-Repository herunterladen. Als Ergebnis wird diese Datei beschädigt.

So können Sie das Problem beheben.

  1. Schließen Sie Ihre Eclipse.
  2. Wenn Sie wissen, welche JAR-Datei im Maven-Repository beschädigt ist, löschen Sie diese Datei.
  3. Wenn Sie nicht wissen, welche Datei im Maven-Repository beschädigt ist, löschen Sie das gesamte Repository (rm -rf $HOME/.m2).
  4. Führen Sie für jedes Projekt mvn package in der Befehlszeile aus. Es ist wichtig, dass der Befehl für jedes Projekt einzeln nacheinander nicht parallel ausgeführt wird. So stellen Sie sicher, dass immer nur eine Instanz von Maven ausgeführt wird.
  5. Öffne deine Eclipse.
0

Ich habe in meinem Projekt ein ähnliches Problem festgestellt. Das Problem wurde behoben, als die JAR-Datei mit der fehlenden Klassendefinition in das lib-Verzeichnis von Tomcat eingefügt wurde.

0
randeepsp

AWS-Abhängigkeit hinzugefügt und hatte diesen Fehler. Wenn ich es von pom entferne, ist der Fehler weg. Möglicherweise haben Sie die gleiche Situation.

0
tadtab