2010-04-14 6 views
28

Ho distribuito un'applicazione web Apache Wicket che utilizza Spring e Hibernate alla mia istanza Tomcat 5.5. Quando accedo all'interfaccia di Tomcat Manager, vedo che l'applicazione web che ho distribuito non è in esecuzione. Quando premo 'Start' ottengo il seguente messaggio di errore; "FAIL - L'applicazione al percorso di contesto/spaghetti non può essere avviata".Come risolvere l'errore listenerStart quando si distribuisce l'app Web in Tomcat 5.5?

mio catalina.log contiene quanto segue:

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 

Estratto dal web.xml:

 
    <listener> 
     <listener-class> 
      org.springframework.web.context.ContextLoaderListener 
     </listener-class> 
    </listener> 

Qualsiasi aiuto è molto apprezzato.

+0

Guardate questa: http://blog.trifork.com/2011/03/18/debugging-the-dreaded-severe-error-listenerstart-and-severe-error-filterstart-tomcat-error-messages/ –

risposta

31
/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 

Si dovrebbe Non avere librerie specifiche del server nella /WEB-INF/lib. Lasciali nella libreria di appserver. Porterebbe solo a collisioni nel classpath. Sbarazzarsi di tutte le librerie specifiche di appserver in /WEB-INF/lib (e anche in JRE/lib e JRE/lib/ext se ne hai piazzate qualcuno lì).

Una causa comune che le librerie specifiche dell'appserver sono incluse nella libreria del webapp è che gli starter pensano che sia il modo giusto per correggere gli errori di compilazione, tra gli altri, delle classi javax.servlet non risolvibili. Inserirli nella libreria webapp è la soluzione sbagliata. Dovresti fare riferimento a loro nel classpath durante la compilazione, ad esempio javac -cp /path/to/server/lib/servlet.jar e così via, oppure se stai utilizzando un IDE, devi integrare il server nell'IDE e associare il progetto web con il server. L'IDE quindi prenderà automaticamente le librerie specifiche del server nel classpath (buildpath) del progetto webapp.

+0

Grazie per l'aiuto BalusC. Non ho aggiunto esplicitamente il servlet-API o jsp-api all'elenco delle dipendenze nel mio pom.xml, in realtà non sono elencati qui. Forse è una dipendenza di una delle dipendenze che ho. Darò il tuo suggerimento. – John

+0

Ho avuto un problema simile, in WTP all'interno di Eclipse, in '/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/...' È iniziato dopo l'aggiornamento da Servlet 2.5 a 3.0 , quindi ho pensato di fare clic con il pulsante destro del mouse sul server, quindi "Pulisci directory di Tomcat Work" dovrebbe cancellarlo. Ma le cose continuavano a tornare. Alla fine, 'mvn dependency: tree' ha mostrato che alcune dipendenze includevano sia' javax.servlet: servlet-api: jar: 2.5' e 'org.mortbay.jetty: servlet-api: jar: 2.5-20081211'. – Arjan

59

Ho scoperto che seguire queste istruzioni mi ha aiutato a scoprire qual era il problema. Per me, quello era il killer, non sapendo cosa fosse rotto.

http://mythinkpond.wordpress.com/2011/07/01/tomcat-6-infamous-severe-error-listenerstart-message-how-to-debug-this-error/

Citando dal link

In Tomcat 6 o superiore, il registratore di default è il logger”java.util.logging” e non Log4J. Quindi, se stai cercando di aggiungere un file "log4j.properties", questo NON funzionerà. logger Java utils cerca un file chiamato “logging.properties” come indicato qui: http://tomcat.apache.org/tomcat-6.0-doc/logging.html

Quindi, per arrivare ai dettagli di debug creare un file “logging.properties” sotto la cartella”/ WEB-INF/classes” della tua GUERRA e sei pronto.

E ora quando riavvii Tomcat, vedrai tutto il tuo debug in pieno splendore !!!

Esempio di file logging.properties:

org.apache.catalina.core.ContainerBase.[Catalina].level = INFO 
org.apache.catalina.core.ContainerBase.[Catalina].handlers = java.util.logging.ConsoleHandler 
+0

Grazie! Esattamente quello che hai detto e magicamente possiamo controllare la vera causa del problema e smettere di perdere tempo. :-) Saluti. –

+1

Vorrei poter superare questa risposta più di una volta. – Chad

+2

Questa è solo una parte del problema (/ mio). L'errore listenerStart si è verificato in 'catalina.out' mentre lo stacktrace è stato scritto in' localhost- .out'. Quindi assicurati di controllare tutti i file di log di tomcat per stacktraces (possibilmente scoprendo il pid usando 'ps aux | grep tomcat' e scoprendo i file aperti di tomcat usando' lsof -p ') – Herbert

7

ho incontrato questo errore quando il JDK che ho compilato l'applicazione sotto era diverso dal Tomcat JVM. Ho verificato che il gestore di Tomcat eseguiva jvm 1.6.0 ma l'app è stata compilata con java 1.7.0.

Dopo l'aggiornamento di Java e la modifica di JAVA_HOME nel nostro script di avvio (/etc/init.d/tomcat) l'errore è andato via.

1

Le risposte fornite da Tom Saleeba sono molto utili. Oggi ho anche lottato con lo stesso errore

Apr 28, 2015 19:53:27 org.apache.catalina.core.StandardContext startInternal GRAVI: Errore listenerStart

ho seguito il suggerimento e aggiunto il file logging.properties. E sotto era la mia ragione di fallimento:

java.lang.IllegalStateException: Impossibile impostare apparato radicale web app proprietà quando file WAR non viene espansa

La causa principale del problema è stato un ascoltatore (Log4jConfigListener) che ho aggiunto nel web.xml. E come per il collegamento SEVERE: Exception org.springframework.web.util.Log4jConfigListener, questo listener non può essere aggiunto all'interno di un WAR non espanso.

Potrebbe essere utile per qualcuno sapere che questo stava accadendo su equipaggiamento OpenShift JBoss.

Problemi correlati