web-dev-qa-db-fra.com

Un conteneur enfant a échoué pendant le démarrage de Java.util.concurrent.ExecutionException

J'ai essayé de créer/exécuter un JSP de base et j'ai rencontré l'erreur suivante. J'ai vu que d'autres personnes avaient eu des problèmes similaires, cependant, je n'ai pas encore été en mesure de trouver (ou de mettre en œuvre correctement) une solution au problème en question. Toute aide serait appréciée!

    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

Je pense que vous trouverez le même problème ici:

Java.lang.ClassNotFoundException: HttpServletRequest

Et répondez probablement aussi ... J'espère que cela vous aidera. 

18
Naman

Vous devez avoir empaqueté le servlet-api.jar avec les autres bibliothèques de votre fichier war. Vous pouvez le vérifier en ouvrant votre fichier war et en accédant au dossier WEB-INF/lib. 

Idéalement, vous ne devriez pas fournir le pot servlet-api. Le conteneur, dans votre cas Tomcat, est chargé de le fournir au moment du déploiement dans votre application. Si vous essayez également de le fournir, des problèmes surgissent du fait d'une non-concordance de version, etc. La meilleure pratique consiste simplement à éviter de l'empaqueter. Supprimez-le du fichier WEB-INF/lib.

Information additionnelle

Si vous utilisez maven pour votre packaging, ajoutez simplement la balise provided avec la dépendance et maven veillera à ne pas le conditionner dans le fichier war final. Quelque chose comme

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

J'ai rencontré un problème similaire, dû au fait que j'avais écrit WebServlet Path dans le fichier .Java et dans le fichier web.xml. Le retirer de n’importe quel endroit me convient parfaitement.

Dans le fichier .Java

@WebServlet("/index1.jsp")

et dans 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

Votre application Web possède des bibliothèques spécifiques à servletcontainer, telles que le fichier servlet-api.jar dans son répertoire/WEB-INF/lib. Ça n'est pas correct.

Retirez-les tous. 

Le répertoire/WEB-INF/lib doit contenir uniquement les bibliothèques spécifiques à la webapp, pas au conteneur de servlet. Le servletcontainer (comme Tomcat) est celui qui devrait déjà fournir les bibliothèques spécifiques à servletcontainer. 

Si vous fournissez des bibliothèques à partir d'un conteneur servlet quelconque d'une marque/version différente, vous rencontrerez ce type de problèmes car votre application Web ne pourrait pas s'exécuter sur un conteneur servlet d'une marque/version différente de celle d'où proviennent ces bibliothèques. .

Comment résoudre: Dans Eclipse Faites un clic droit sur le projet dans Propriétés Eclipse -> Chemin de construction Java -> Ajouter une bibliothèque -> Bibliothèque d'exécution du serveur -> Apache Tomcat

Projet Im Maven: -

ajouter la ligne suivante dans le fichier 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>
4
Mahender Yadav

Supprimez le projet nommé Serveurs (ou Serveurs1, Serveurs2 qui contient votre fichier server.xml), recherchez-le dans l'Explorateur de packages (espace de travail). 

Supprimer le serveur d’Eclipse: Accédez à Fenêtre> Préférences> Serveur> Environnement d’exécution, supprimez le serveur que vous utilisez actuellement dans Eclipse et rajoutez-le (cela créera un nouveau dossier de projet Serveur dans Eclipse), 

Supprimez le serveur du projet: Supprimez également le serveur de votre projet (chemin de construction> chemin de configuration> chemin de construction Java) et ajoutez-le à nouveau.

maintenant vous avez un nouveau projet serveur qui n'aura pas de contexte multiple sur son server.xml; la suppression du chemin dupliqué dans server.xml résout le problème persistant, mais le serveur ne démarre toujours pas, en procédant ainsi, le serveur démarré (Apache Tomcat v7) et fonctionnant normalement

Et je ne sais pas si c'est une bonne pratique ou non, je suis un débutant en programmation. 

3
Jov

J'essaie avec http servlet et je trouve ce problème lorsque j'écris en double @WebServlet , que j'ai rencontré avec ce problème.Après avoir supprimé ou modifié @WebServlet value, cela fonctionne.

1.Classe

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

2.Classe

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

vérifiez si Java_HOME est défini sur 1.7 ou moins. parce que Tomcat 7 n'est pas compatible avec jdk 1.8 

Cela a fonctionné pour moi

1
Raj Shekar

C'est ce qui a fonctionné pour moi:

1) ajoutez commons-logging.jar dans le dossier WEB-INF/lib

2) Ajoutez ce pot en tant que dépendance maven, par exemple. ajoutez ceci au pom.xml: 

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

3) installer Maven

4) Exécutez le serveur.

J'espère que ça aide.

1
João Matos
  1. télécharger commons-logging-1.1.1.jar .
  2. Accédez à Votre projet, chemin de construction, configurez le chemin de construction, le chemin de génération Java.
  3. Ajouter des fichiers externes .. add commons-logging-1.1.1.jar
  4. cliquez sur appliquer, ok
  5. Allez au projet, propriétés, assemblage de déploiement, cliquez sur ajouter, entrées du chemin de génération Java, puis sélectionnez jar de journalisation des communs, ok, s'appliquent, ok, etc.
  6. Supprimer le serveur, nettoyer votre projet, ajouter un serveur, lancez votre projet.
0
In Dra_ 0509

Ce problème se produit parfois à cause d'une version Java incompatible et de la version de Tomcat. 

0
anand mishra

J'ai rencontré un problème similaire avec des journaux similaires. J'utilisais JDK 1.6 avec Apache Tomcat 7. La définition de Java_home sur 1.7 a résolu le problème.

0
jetty

Face au même problème. Changé le JRE à la version 1.8 correcte et effectuez un maven clean et build résolvez le problème. Vous devrez peut-être modifier la facette du projet et vérifier le chemin correct.

0
Arindam

Ce problème peut également être causé par un référentiel Maven endommagé.

J'observe le message SEVERE: A child container failed during start de temps en temps lorsque je travaille avec Eclipse. Mon espace de travail Eclipse comporte plusieurs projets. Certains projets ont des dépendances externes communes. Si le référentiel Maven est vide (ou que j'ajoute de nouvelles dépendances dans les fichiers pom.xml), Eclipse commence à télécharger les bibliothèques spécifiées dans pom.xml dans le référentiel Maven. Et Eclipse fait cela en parallèle pour plusieurs projets dans l’espace de travail. Il peut arriver que plusieurs threads Eclipse téléchargent le même fichier simultanément au même endroit du référentiel Maven. En conséquence, ce fichier est corrompu.

Donc, voici comment vous pouvez résoudre le problème.

  1. Fermez votre éclipse.
  2. Si vous savez quel fichier JAR spécifique est cassé dans le référentiel Maven, supprimez ce fichier.
  3. Si vous ne savez pas quel fichier est cassé dans le référentiel Maven, supprimez le référentiel entier (rm -rf $HOME/.m2).
  4. Pour chaque projet, exécutez mvn package dans la ligne de commande. Il est important d’exécuter la commande pour chaque projet un par un, pas en parallèle; Ainsi, vous vous assurez qu'une seule instance de Maven est exécutée à chaque fois.
  5. Ouvrez votre Eclipse.
0
Alexander Pozdneev

Ajout de la dépendance à AWS et avait cette erreur. Lorsque je le retire de pom, l'erreur disparaît. Vous pourriez probablement avoir la même situation.

0
tadtab