2011-01-24 83 views
12

Estoy tratando de configurar una aplicación web en Eclipse. Estoy usando Tomcat 6.0 y jdk 1.6.0_23. Por alguna razón estoy recibiendo este error:Log4jConfigListener no se puede encontrar - contexto no se puede iniciar

 
SEVERE: Error configuring application listener of class org.springframework.web.util.Log4jConfigListener 
java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListener 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491) 
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4078) 
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445) 
at org.apache.catalina.core.StandardService.start(StandardService.java:519) 
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
at org.apache.catalina.startup.Catalina.start(Catalina.java:581) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
Jan 24, 2011 11:44:08 AM org.apache.catalina.core.StandardContext listenerStart 
SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener 
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491) 
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4078) 
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445) 
at org.apache.catalina.core.StandardService.start(StandardService.java:519) 
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
at org.apache.catalina.startup.Catalina.start(Catalina.java:581) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 

he comprobado si todas las bibliotecas se han añadido a la trayectoria de la estructura y todo parece correcto. log4j-1.2.15.jar está incluido y todas las bibliotecas de primavera necesarias.

Estoy muy confundido sobre cuál es el problema, especialmente porque el proyecto funcionaba bien en otra computadora. Cualquier ayuda con este problema será muy apreciada.

Naftal

+0

puede listar las bibliotecas que ha incluido –

+0

Estoy usando Hibernate, así que tengo bibliotecas de hibernación como hibernate-annotations.jar, hibernate3.jar, etc. Pero de acuerdo con la stacktrace, parece que me falta una de las librabries de springframework. Tengo estas bibliotecas de primavera: - spring.jar, spring-aop.jar, spring-aspects.jar, spring-beans.jar, spring-context.jar, spring-context-support.jar, spring-core.jar, spring -jdbc.jar, spring-test.jar, spring-web.jar, spring-webmvc.jar – 1000Suns

+0

ok, entonces no hay ningún contenedor de primavera, ¿o sí? –

Respuesta

4

clase El org.springframework.web.util.Log4jConfigListener no está definitivamente en la ruta de clases.

Lo primero que sugiero es que suba el nivel de registro en Tomcat - en la carpeta conf - a "TODO" o "DEPURAR" para que pueda ver exactamente lo que está sucediendo en el contenedor que está impidiendo que se encuentre esta clase.

En segundo lugar, me gustaría recomendar que revise sus archivos JAR para el archivo de clase que falta mediante la ejecución de grep, si en Linux/Mac:

# run at the root of your lib folders: 
    grep -ri "org.springframework.web.util.Log4jConfigListener" * 

El comando anterior devolverá todos los archivos JAR que contienen ese paquete. Una vez que el archivo JAR está aislado, puede seguir resolviendo los problemas.

En tercer lugar, asegúrese de que no tenga ningún conflicto. Múltiples versiones de Log4j en tu classpath causarán estragos. ¿Cómo se supone que el sistema debe saber que org.springframework.web.util.Log4jConfigListener paquete cargar si hay 2 de ellos? Tomcat tiene 3 carpetas de ruta de clases diferentes:

shared/lib 
lib 
webapps/yourapp/WEB-INF/lib 

asegurarse de que tiene solamente un solo archivo JAR log4j en sólo una de estas carpetas.

+0

Eliminaré todas las bibliotecas y comenzaré de cero. Gracias por toda la ayuda. – 1000Suns

3

Si está utilizando Maven y Eclipse

1) Busque en su proyecto web .classpath archivo. Si tiene una entrada classpath "org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER", asegúrese de que el atributo también esté allí.

<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"> 
    <attributes> 
     <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/> 
    </attributes> 
</classpathentry> 

2) Si eso no funciona, a continuación, haga clic derecho en su proyecto web en Eclipse y vaya a Propiedades - dependencias> Módulo JavaEE. Asegúrese de que la casilla Dependencias de Maven esté marcada.

continuación, guardar, construir segunda sugerencia implementar bla bla

+0

¡Hola, gracias, eso me funciona para eclipse helios! – Badal

36

de Reticulogic es correcta. Sin embargo, en Eclipse Helios, se eliminó la opción "Dependencias del módulo Java EE". La corrección para Helios es el siguiente:

  1. Haga clic derecho sobre su proyecto en Eclipse y vaya a Propiedades -> Asamblea despliegue
  2. Haga clic en "Añadir ...Las entradas "
  3. Seleccione 'Java Build Path' y haga clic en 'Siguiente'
  4. seleccione 'Maven Dependencias' y haga clic en 'Finalizar'
+3

¡Muchas gracias! Estuve atascado en esto por siglos: Bounty viene en tu camino. –

+1

Esta solución también me funciona en eclipse helios. – Badal

+1

¡Gran solución! – Eyal

1

Una solución simple es limpiar el directorio de Tomcat en Eclipse. Se trabajó para mí.

+1

¿Cómo lo haría? – likeitlikeit

+0

En Eclipse Mars, en el panel de vista de servidores, haga clic con el botón derecho en la instancia del servidor, luego elija "Limpiar ..." o "Limpiar el directorio de trabajo de Tomcat ..." – chrisinmtown

0

Si utiliza, log4j2, usted puede encontrar estas clases en

org.apache.logging.log4j.web.* 

paquete.

Cuestiones relacionadas