2012-05-21 68 views
10

tengo Commons-logging.jar (v1.0.4) y log4j-1.2.8.jar en la ruta de clase y conseguir de error siguiente en tiempo de ejecución:¿Cuál es la causa raíz de Log4JLogger 'no se puede encontrar o no se puede usar?

Caused by: org.apache.commons.logging.LogConfigurationException: User-specified log class 'org.apache.commons.logging.impl.Log4JLogger' cannot be found or is not useable. 
    at org.apache.commons.logging.impl.LogFactoryImpl.discoverLogImplementation(LogFactoryImpl.java:874) 
    at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:604) 
    at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:336) 
    at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:310) 
    at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:685) 
+0

¿Puede proporcionar rastro de pila completo? – Dmitry

+6

Es probable que sea un problema de classpath. Probablemente tengas otra versión de log4j en tu classpath, posiblemente escondida dentro de otra cosa. –

+0

sí encontré un jar que tenía una versión diff de log4j, pero puede que no sea el último, sigue buscando ... –

Respuesta

4

Esto era un problema de classpath y teníamos otra versión de log4j en el classpath. Gracias Nathan Ryan!

1

Si va a proporcionar una implementación para un registrador, la implementación debe definir un constructor que tome un java.lang.String como argumento. De lo contrario, obtienes una "org.apache.commons.logging.LogConfigurationException: la clase de registro especificada por el usuario '...' no se puede encontrar o no se puede usar." La página faq del apache wiki lo dice.

¿Está creando algún proyecto específico como servicios web o primavera, etc.? Si es así, por favor, analizar los archivos de propiedades específicas del proyecto que tendría una propiedad en referencia al registrador, algo así como

<property name="logger">javax.servlet,org.apache.commons.logging</property>

si tiene un proyecto Java con servlets.

+0

no tenemos nuestra implementación de Logger, así que elimine ese problema. es una aplicación core-java que se ejecuta en su propio jvm –

+0

ok. Por favor, brinde más información sobre su problema, el stack-trace, el código mínimo de trabajo, etc. – mtk

1

Recibí la misma excepción.

Tengo una implementación de registrador.

No tenía un constructor que toma una cadena como argumento.

Implementé tal constructor y eso me solucionó el problema.

1

Veo este error algunas veces cuando trato de ejecutar una aplicación web en tomcat 7 en my eclipse 3.6. Ocurre de la nada con solo reiniciar el eclipse.

Después de varios (!) "Limpiar todos los proyectos" y nuevas implementaciones de la aplicación web en el servidor, la aplicación se ejecuta nuevamente. ¿Tal vez alguien más sepa el "hechizo" exacto para resolver este misterio sin prueba y error?

1

Recibí este error cuando apache commons logging jar estaba allí en mi classpath pero log4j jar de alguna manera faltaba. Una vez que agregué log4j jar a mi ruta de clase, este error desapareció.

11

Si el uso de Maven, debe asegurarse de declarar commons-logging log4j y en pom.xml

<dependencies> 
    <dependency> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
     <version>1.1.3</version> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.17</version> 
    </dependency> 
</dependencies> 

si se declara que sólo commons-logging con la obtención de error Log4JLogger cannot be found or is not useable

3

tenido este problema mediante log4j -2.x con commons-logging-1.2. Volvió a log4j 1.2.x y todo está bien con el mundo.

Cuestiones relacionadas