2015-01-23 18 views
18

Ho provato a creare/eseguire un JSP di base e ho riscontrato il seguente errore. Ho visto che altre persone hanno avuto problemi simili, tuttavia, non sono ancora riuscito a trovare (o implementare correttamente) una soluzione al problema. Qualsiasi aiuto sarebbe apprezzato!Un contenitore secondario non è riuscito durante l'avvio 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

Qual è la versione di tomcat e 'servlet-api' che stai utilizzando? Se la tua applicazione non è distribuita, il contenitore inizia correttamente? Inoltre, controlla la cartella 'servlet-api'in' lib'. –

+1

Tutto sommato, questa eccezione 'java.lang.ClassNotFoundException: HttpServletRequest' può essere generata quando librerie specifiche del server come' servlet-api' sono collocate nella cartella '/ WEB-INF/lib'. Hai aggiunto manualmente tali dipendenze al tuo progetto. – Tiny

risposta

16

penso troverete problema simile qui:

java.lang.ClassNotFoundException: HttpServletRequest

E probabilmente rispondere troppo. Spero che questo aiuti.

+4

Questo dovrebbe essere un flag duplicato invece di una risposta, ma la domanda è protetta da bounty. –

+0

Grazie per il tuo aiuto, l'ho fatto funzionare. – zzz2991

5

È necessario disporre del pacchetto servlet-api.jar insieme alle altre librerie nel file di guerra. Puoi verificarlo aprendo il tuo file war e navigando nella cartella WEB-INF/lib.

Idealmente, non si dovrebbe fornire il barattolo API-servlet. Il contenitore, nel tuo caso Tomcat, è responsabile di fornirlo in fase di distribuzione alla tua applicazione. Se provi a fornire anche questo, i problemi sorgono a causa della mancata corrispondenza della versione, ecc. La cosa migliore è evitare di confezionarla. Rimuovilo dal WEB-INF/lib.

Informazioni aggiuntive

Se si utilizza Maven per la confezione, quindi è sufficiente aggiungere il tag provided con la dipendenza e Maven farà in modo di non confezionarlo nel file di guerra finale. Qualcosa di simile

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

In realtà, l'errore è stato risolto ma il problema che sto ottenendo è causato da: com.sun.jersey.api.MessageException: un writer del corpo del messaggio per la classe Java com.db.conec.Track e classe di classe Java com.db. conec.Track, e il tipo di supporto MIME text/plain non è stato trovato –

+0

please helpppppp –

3

tuo webapp ha servletcontainer librerie specifiche come file di servlet-api.jar nella sua/WEB-INF/lib. Questo non è giusto.

Rimuovere tutti.

Il file/WEB-INF/lib dovrebbe contenere solo le librerie specifiche per la webapp, non per il contenitore servlet. Il servlettaintainer (come Tomcat) è quello che dovrebbe già fornire le librerie specifiche del servlet.

Se fornite librerie da un servlet container arbitrario di una marca/versione diversa, vi imbatterete in questo tipo di problemi perché la vostra webapp non sarebbe in grado di eseguire su un servlettaintainer di una marca/versione diversa da quella in cui tali le biblioteche sono originate da.

Come risolvere: In Eclipse Fare clic destro sul progetto in Proprietà Eclipse -> Java Build Path -> Aggiungi library -> Libreria di runtime server -> Apache Tomcat

Im Maven Progetto: -

aggiuntivo riga seguente nel file di 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> 
0

ho affrontato problema simile con i registri simili. Stavo usando JDK 1.6 con apache tomcat 7. L'impostazione di java_home su 1.7 ha risolto il problema.

1

controllare se JAVA_HOME è impostato su 1.7 o inferiore. perché tomcat 7 non è compatibile con jdk 1.8

Questo ha funzionato per me

1

Questo è ciò che ha funzionato per me:

1) aggiungere commons-logging.jar alla cartella WEB-INF/lib

2) Aggiungere questo barattolo come una dipendenza da esperti, ad es aggiungere questo alla pom.xml:

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

3) Maven installare

4) Eseguire il server.

Spero che aiuti.

0

Alcune volte questo problema si verifica a causa della versione non compatibile di java e della versione di tomcat. Scegliere la versione compatibile di entrambi.

3

eliminare il progetto denominato Server (o Servers1, Servers2 che contiene il vostro server.xml), trovano in Package Explorer (workspace)

Rimuovi server da Eclipse: Vai alla Finestra> Preferenze> Server> Runtime Environment, qui rimuovere il server si sta usando da Eclipse e aggiungere di nuovo (facendo questo creerà una nuova cartella di progetto del server in Eclipse),

server di Rimuovi dal progetto: rimuovere anche il server nel progetto (Costruisci percorso> percorso di configurazione> Percorso Java Build) e aggiungere nuovamente.

ora che hai un progetto Server fresca che non avrà Context multiple sul suo server.xml, cancellando unica strada duplice esemplare in server.xml risolto il problema exixting ma ancora di avvio del server a forza, facendo questo server iniziato (Apache Tomcat v7) e ha funzionato normale

E non so se questa è una buona pratica o no, sono un antipasto in programmazione.

+0

io aggiungo e rimuovo qualcosa in pom.xml e lo sostituisco al file originale, improvvisamente il mio spazio di lavoro sta diventando pazzo .. dopo aver fatto questo passaggio ... riesco a avvia il server ... grazie amico. – Sh4m

0

Di fronte allo stesso problema. Modificato il JRE nella versione 1.8 corretta e facendo un maven clean e build risolvi il problema. Potrebbe essere necessario modificare il facet del progetto e verificare il percorso corretto.

4

Ho riscontrato un problema simile ed è stato causato perché avevo scritto WebServlet Path nel file .java e nel web.xml. Rimuovendolo da una qualsiasi posizione funziona bene per me.

Nel file .java

@WebServlet("/index1.jsp") 

e 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. scaricare commons-logging-1.1.1.jar.
  2. Passare al progetto, creare percorso, configurare il percorso di generazione, percorso di configurazione java.
  3. Aggiungi vasi esterni .. Aggiungi commons-logging-1.1.1.jar
  4. click su applica, ok
  5. Vai al progetto, le proprietà, Assemblea distribuzione, fare clic su Aggiungi, voci di percorso di generazione Java, Avanti, selezionare i comunali che registrano il barattolo, ok, si applicano, ok ..
  6. Elimina server, pulisci il tuo profilo, aggiungi server, Esegui il tuo progetto.
2

cerco con http servlet e trovo questo problema quando scrivo duplicato @WebServlet, ho incontrato con questo issue.After posso rimuovere o modificare @WebServlet valore si sta lavorando.

1.class

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

2.Class

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

Aggiunto AWS dipendenza e ha avuto questo errore. Quando lo rimuovo da pom l'errore è andato. Probabilmente potresti avere la stessa situazione.