J'ai déployé une application Web Apache Wicket qui utilise Spring et Hibernate sur mon instance Tomcat 5.5. Lorsque je navigue vers l'interface de Tomcat Manager, je constate que l'application Web que j'ai déployée ne fonctionne pas. Lorsque j'appuie sur "Démarrer", j'obtiens le message d'erreur suivant; Msgstr "ECHEC - L 'application sur le chemin du contexte/spaghetti n'a pas pu être démarrée".
Mon catalina.log contient les éléments suivants:
Apr 15, 2010 1:51:22 AM org.Apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/var/lib/Tomcat5.5/webapps/spaghetti/WEB-INF/lib/jsp-api-6.0.16.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/jsp/JspPage.class
Apr 15, 2010 1:51:22 AM org.Apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/var/lib/Tomcat5.5/webapps/spaghetti/WEB-INF/lib/servlet-api-6.0.16.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
Apr 15, 2010 1:51:24 AM org.Apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
Apr 15, 2010 1:51:24 AM org.Apache.catalina.core.StandardContext start
SEVERE: Context [/spaghetti] startup failed due to previous errors
Extrait de web.xml:
<listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </ auditeur>
Toute aide est grandement appréciée.
/var/lib/Tomcat5.5/webapps/spaghetti/WEB-INF/lib/jsp-api-6.0.16.jar
/var/lib/Tomcat5.5/webapps/spaghetti/WEB-INF/lib/servlet-api-6.0.16.jar
Vous devez pas avoir des bibliothèques spécifiques au serveur dans le /WEB-INF/lib
. Laissez-les dans la bibliothèque du serveur d'applications. Cela ne conduirait qu'à des collisions dans le chemin de classe. Débarrassez-vous de toutes les bibliothèques spécifiques au serveur d'applications dans /WEB-INF/lib
(Et également dans JRE/lib
Et JRE/lib/ext
Si vous en avez placé une).
Une cause courante de l'inclusion des bibliothèques spécifiques au serveur d'applications dans la bibliothèque de l'application Web est que les démarreurs pensent que c'est la bonne façon de corriger les erreurs de compilation, entre autres, les classes javax.servlet
Qui ne sont pas résolvables. Les mettre dans la bibliothèque de webapp n'est pas la bonne solution. Vous devez les référencer dans le chemin de classe lors de la compilation, c'est-à-dire javac -cp /path/to/server/lib/servlet.jar
Et ainsi de suite, ou si vous utilisez un IDE, vous devez intégrer le serveur dans le IDE et associer le projet Web au serveur . Le IDE prendra alors automatiquement les bibliothèques spécifiques au serveur dans le chemin de classe ( buildpath ) du projet webapp.
J'ai trouvé que le fait de suivre ces instructions m'a aidé à trouver le problème. Pour moi, c'était le tueur, ne sachant pas ce qui avait été brisé.
Citant du lien
Dans Tomcat 6 ou supérieur, l'enregistreur par défaut est l'enregistreur "Java.util.logging" et non Log4J. Donc, si vous essayez d'ajouter un fichier "log4j.properties" - cela ne fonctionnera PAS. L'enregistreur d'utils Java recherche un fichier appelé "logging.properties" comme indiqué ici: http://Tomcat.Apache.org/Tomcat-6.0-doc/logging.html
Donc, pour accéder aux détails de débogage, créez un fichier "logging.properties" sous votre dossier "/ WEB-INF/classes" de votre WAR et vous êtes prêt.
Et maintenant, lorsque vous redémarrez votre Tomcat, vous verrez tout votre débogage dans toute sa splendeur !!!
Exemple de fichier logging.properties:
org.Apache.catalina.core.ContainerBase.[Catalina].level = INFO
org.Apache.catalina.core.ContainerBase.[Catalina].handlers = Java.util.logging.ConsoleHandler
J'ai rencontré cette erreur lorsque le JDK sous lequel j'ai compilé l'application était différent de la JVM Tomcat. J'ai vérifié que le gestionnaire Tomcat exécutait jvm 1.6.0 mais l'application a été compilée sous Java 1.7.0.
Après la mise à niveau Java et la modification de Java_HOME dans notre script de démarrage (/etc/init.d/Tomcat), l'erreur a disparu.
La réponse fournie par Tom Saleeba est très utile. Aujourd'hui, j'ai aussi eu du mal avec la même erreur
28 avril 2015 7:53:27 PM org.Apache.catalina.core.StandardContext startInternal SEVERE: Erreur listenerStart
J'ai suivi la suggestion et ajouté le fichier logging.properties. Et ci-dessous était ma raison d'échec:
Java.lang.IllegalStateException: impossible de définir la propriété du système racine de l'application Web lorsque le fichier WAR n'est pas développé
La cause première du problème était un écouteur (Log4jConfigListener) que j'ai ajouté dans le fichier web.xml. Et selon le lien SEVERE: Exception org.springframework.web.util.Log4jConfigListener , cet écouteur ne peut pas être ajouté dans un WAR qui n'est pas développé.
Il peut être utile pour quelqu'un de savoir que cela se produit sur l'équipement OpenShift JBoss.