2015-01-23 3 views
18

Ich habe versucht, eine Basis-JSP zu erstellen/auszuführen, und habe den folgenden Fehler angezeigt. Ich habe gesehen, dass andere Leute ähnliche Probleme hatten, aber ich war noch nicht in der Lage, eine Lösung für das Problem zu finden (oder richtig umzusetzen). Jede Hilfe wäre willkommen!Ein untergeordneter Container ist beim Start fehlgeschlagen. Java.util.concurrent.ExecutionException

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"] 
+0

Was ist die Version von tomcat und 'servlet-api', die Sie verwenden? Ohne Ihre Anwendung wird der Container ordnungsgemäß gestartet? Überprüfen Sie auch den 'servlet-api'in' lib'-Ordner. –

+1

Alles in allem kann diese Ausnahme 'java.lang.ClassNotFoundException: HttpServletRequest' ausgelöst werden, wenn serverspezifische Bibliotheken wie' servlet-api' im Ordner '/ WEB-INF/lib' abgelegt werden. Haben Sie solche Abhängigkeiten manuell zu Ihrem Projekt hinzugefügt? – Tiny

Antwort

16

Ich glaube, Sie ähnliches Problem finden Sie hier:

java.lang.ClassNotFoundException: HttpServletRequest

Und wahrscheinlich zu beantworten. Hoffe, das hilft.

+4

Dies sollte eine doppelte Flagge anstelle einer Antwort gewesen sein, aber die Frage wird durch Kopfgeld geschützt. –

+0

Danke für Ihre Hilfe, ich habe es funktioniert. – zzz2991

5

Sie müssen die servlet-api.jar zusammen mit den anderen Bibliotheken in Ihrer WAR-Datei verpackt haben. Sie können dies überprüfen, indem Sie Ihre WAR-Datei ö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, dass er ihn zum Zeitpunkt der Bereitstellung für Ihre Anwendung bereitstellt. Wenn Sie versuchen, es ebenfalls bereitzustellen, treten Probleme aufgrund von Versionskonflikten usw. auf. Am besten vermeiden Sie es, es zu verpacken. Entfernen Sie es aus dem WEB-INF/lib.

Weitere Informationen

Wenn Sie Maven für Ihre Verpackung verwenden, dann einfach den provided Tag mit der Abhängigkeit und Maven hinzufügen werden sicher macht es nicht in der letzten Krieg Datei zu verpacken. So etwas wie

<dependency> 
    <artifact>.. 
    <group> ... 
    <version> ... 
    <scope>provided</scope> 
</<dependency> 
+0

Eigentlich ist der Fehler gelöst, aber das Problem, das ich bekomme, ist verursacht durch: com.sun.jersey.api.MessageException: Eine Nachricht Body Writer für die Java-Klasse com.db.conec.Track und Java-Klasse com.db. conec.Track, und MIME media type text/plain wurde nicht gefunden –

+0

bitte helpppppp –

3

Ihre Webapp hat servletcontainer spezifische Bibliotheken wie Servlet-api.jar Datei in seinem/WEB-INF/lib. Das ist nicht richtig.

Entfernen Sie alle.

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

Wenn Sie Bibliotheken von einem beliebigen Servletcontainer eines anderen Herstellers/einer anderen Version bereitstellen, werden Sie auf diese Art von Problemen stoßen, da Ihre Webanwendung nicht auf einem Servletcontainer eines anderen Herstellers/einer anderen Version laufen könnte Bibliotheken stammen aus.

Wie lösen: in Eclipse direkt am Projekt in Eclipse auf Eigenschaften -> Java Build Path -> Add-Bibliothek -> Server Runtime Library -> Apache Tomcat

Im Maven Projekt: -

add in pom.xml Datei

<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> 
0

ich konfrontiert ähnliches Problem mit ähnlichen Protokollen follwing Linie. Ich benutzte JDK 1.6 mit Apache Tomcat 7. Das Setzen von java_home auf 1.7 behob das Problem.

1

überprüfen Sie, ob Sie JAVA_HOME auf 1.7 oder niedriger eingestellt ist. weil tomcat 7 nicht mit jdk 1 kompatibel ist.8

Dieser arbeitete für mich

1

Dies ist, was für mich gearbeitet:

1) in commons-logging.jar zum WEB-INF/lib Ordner

2) Dieses Glas als eine maven Abhängigkeit, z fügen Sie diese in die pom.xml:

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

3) Maven

installieren

4) Führen Sie den Server.

Ich hoffe, es hilft.

0

Einige Zeit dieses Problem wegen inkompatibler Java-Version und Tomcat-Version auftreten. Wählen Sie die kompatible Version von beiden.

3

Löschen Sie das Projekt mit dem Namen-Server (oder Servern1, Servers2 die Ihre server.xml enthält), findet sie in Paket-Explorer (Arbeitsplatz)

Remove Server von Eclipse-: Zum Fenster> Einstellungen> Server> Runtime Environment, entfernen sie hier den Server Ihres von eclipse verwenden und fügen sie es erneut (Dadurch wird ein neue Server-Projektordner in eclipse erstellen),

Remove Server Projekt: auch den Server in Ihrem Projekt entfernen (Build-Pfad> Konfigurationspfad> Java Build-Pfad) und erneut hinzufügen.

jetzt hast du ein neues Server-Projekt, den Multiple-Kontext nicht auf seiner server.xml haben wird, nur doppelten Weg in server.xml löste das exixting Problem zu löschen, aber immer noch Start Server vermöge, die von diesem Server gestartet tun (Apache Tomcat v7) und arbeitete normal

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

+0

ich einfach hinzufügen und entfernen etwas in pom.xml und ersetzen, um ursprüngliche datei, plötzlich mein arbeitsraum verrückt .. nach diesem schritt .. ich es schaffen starte den Server ... Danke, Mann. – Sh4m

0

Konfrontiert das gleiche Problem. Die JRE wurde auf die korrekte 1.8-Version geändert und ein Maven-Clean-Build wird ausgeführt, um das Problem zu beheben. Möglicherweise müssen Sie die Projektfacette ändern und den korrekten Pfad überprüfen.

4

Ich sah ähnliches Problem und es wurde verursacht, weil ich WebServlet Pfad in der .java-Datei sowie in der web.xml geschrieben hatte. Es von mir aus zu entfernen funktioniert 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> 
0
  1. herunterladen commons-logging-1.1.1.jar.
  2. Gehen Sie zu Ihrem Projekt, Build-Pfad, konfigurieren Build-Pfad, Java Build-Pfad.
  3. externe Gläser hinzu .. commons-logging-1.1.1.jar
  4. , klicken Sie auf Anwendung hinzufügen, ok
  5. Zum Projekt, Eigenschaften, Deployment Assembly, klicken Sie auf Hinzufügen, Java Build-Pfad Einträge, als nächstes, wählen commons logging jar, ok, bewerben, ok ..
  6. Server löschen, ur Proejct löschen, Server hinzufügen, Führen Sie Ihr Projekt aus.
2

ich mit http Servlet versuchen und ich finde, dieses Problem, wenn ich dupliziert schreiben @WebServlet, stieß ich mit diesem issue.After ich entfernen oder Wert ändern @WebServlet es funktioniert.

1.Klasse

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

2.Klasse

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

Added AWS Abhängigkeit und hatte diesen Fehler. Wenn ich es von Pom entferne, ist der Fehler weg. Wahrscheinlich haben Sie vielleicht die gleiche Situation.

Verwandte Themen