2010-04-14 15 views
28

Implementé una aplicación web Apache Wicket que usa Spring e Hibernate en mi instancia de Tomcat 5.5. Cuando navego a la interfaz de Tomcat Manager, veo que la aplicación web que implementé no se está ejecutando. Cuando presiono 'Start' recibo el siguiente mensaje de error; "FAIL - La aplicación en la ruta de contexto/spaghetti no se pudo iniciar".Cómo resolver el error de escucha ¿Iniciar cuando se implementa una aplicación web en Tomcat 5.5?

Mi catalina.log contiene lo siguiente:

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 

Extracto de web.xml:

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

Cualquier ayuda es muy apreciada.

+0

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

Respuesta

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 

Usted debe no tiene ningún bibliotecas específicas del servidor en el /WEB-INF/lib. Déjalos en la propia biblioteca del servidor de aplicaciones. Solo provocaría colisiones en el classpath. Deshágase de todas las bibliotecas específicas del servidor de aplicaciones en /WEB-INF/lib (y también en JRE/lib y JRE/lib/ext si ha colocado alguno de ellos allí).

Una causa común de que las bibliotecas específicas del servidor de aplicaciones estén incluidas en la biblioteca de aplicaciones web es que los iniciadores piensan que es la forma correcta de corregir errores de compilación, entre otros, que las clases javax.servlet no son resueltas. Ponerlos en la biblioteca de webapp es la solución incorrecta. Debe hacer referencia a ellos en el classpath durante la compilación, es decir, javac -cp /path/to/server/lib/servlet.jar y así sucesivamente, o si está utilizando un IDE, debe integrar el servidor en el IDE y asociar el proyecto web con el servidor. El IDE tomará automáticamente las bibliotecas específicas del servidor en el classpath (buildpath) del proyecto webapp.

+0

Gracias por la ayuda BalusC. No he agregado explícitamente el servlet-api o jsp-api a la lista de dependencias en mi pom.xml, de hecho no están listados allí. Tal vez es una dependencia de una de las dependencias que tengo. Voy a dar un golpe a tu sugerencia. – John

+0

Tuve un problema similar, en WTP dentro de Eclipse, en '/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/...' Comenzó después de actualizar de Servlet 2.5 a 3.0 , así que pensé que hacer clic con el botón derecho en el servidor y luego "Limpiar el directorio de trabajo de Tomcat" debería borrarlo. Pero las cosas seguían volviendo. Eventualmente, 'mvn dependency: tree' mostró que algunas dependencias incluían tanto' javax.servlet: servlet-api: jar: 2.5' y 'org.mortbay.jetty: servlet-api: jar: 2.5-20081211'. – Arjan

59

Descubrí que seguir estas instrucciones ayudaba a encontrar cuál era el problema. Para mí, ese fue el asesino, sin saber qué estaba roto.

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

Citando el enlace

En Tomcat 6 o superior, el logger por defecto es el registrador”java.util.logging” y no Log4J. Entonces, si está intentando agregar un archivo "log4j.properties", esto NO funcionará. El registrador de Java utils busca un archivo llamado “logging.properties” según lo indicado aquí: http://tomcat.apache.org/tomcat-6.0-doc/logging.html

Así que para llegar a los detalles de depuración crear un archivo “logging.properties” debajo de la carpeta”/ WEB-INF/classes” de tu GUERRA y estás listo.

Y ahora cuando reinicie su Tomcat, verá toda su depuración en toda su gloria!

Muestra logging.properties archivo:

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

Gracias! Exactamente lo que has dicho y, por arte de magia, podemos verificar la verdadera causa del problema y dejar de perder el tiempo. :-) Saludos. –

+1

Desearía poder votar esta respuesta más de una vez. – Chad

+2

Esto es solo una parte del problema (/ my). El error listenerStart ocurrió en 'catalina.out' mientras que stacktrace se escribió en' localhost- .out'. Así que asegúrese de verificar todos los archivos de registro de tomcat para stacktraces (posiblemente descubriendo el pid usando 'ps aux | grep tomcat' y descubriendo los archivos abiertos de tomcat usando' lsof -p ') – Herbert

7

me encontré con este error cuando el JDK que he realizado bajo la aplicación era diferente de la JVM Tomcat. Verifiqué que el administrador de Tomcat ejecutaba jvm 1.6.0 pero la aplicación se compiló bajo Java 1.7.0.

Después de actualizar Java y cambiar JAVA_HOME en nuestro script de inicio (/etc/init.d/tomcat) el error desapareció.

1

Respondida provista por Tom Saleeba es muy útil. Hoy también he luchado con el mismo error

Abr 28 de, el año 2015 7:53:27 PM org.apache.catalina.core.StandardContext startInternal GRAVES: Error listenerStart

Seguí la sugerencia y agregó el archivo logging.properties. Y a continuación fue la razón del fracaso:

java.lang.IllegalStateException: No se puede establecer sistema radicular aplicación web propiedad cuando archivo WAR no se expande

La causa raíz del problema era un oyente (Log4jConfigListener) que agregué al web.xml. Y según el enlace SEVERE: Exception org.springframework.web.util.Log4jConfigListener, este oyente no se puede agregar dentro de un WAR que no esté expandido.

Puede ser útil que alguien sepa que esto estaba sucediendo en el engranaje OpenShift JBoss.

Cuestiones relacionadas