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"]
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.
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>
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>
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>
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.
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 {
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
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.
Ce problème se produit parfois à cause d'une version Java incompatible et de la version de Tomcat.
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.
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.
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.
rm -rf $HOME/.m2
).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.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.