SLF4J: No se pudo cargar la clase "org.slf4j.impl.StaticLoggerBinder"
Mi aplicación se implementará tanto en tcServer como en WebSphere 6.1. Esta aplicación utiliza ehCache y por eso requiere slf4j como dependencia. Como resultado, agregué el archivo jar slf4j-api.jar (1.6) a mi paquete de archivos war.
La aplicación funciona bien en tcServer excepto por el siguiente error:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Sin embargo, cuando implemento en WebSphere obtengo un archivo java.lang.NoClassDefFoundError: org.slf4j.impl.StaticLoggerBinder
.
Acompañado también deFailed to load class "org.slf4j.impl.StaticMDCBinder"
Revisé las rutas de clases de ambos servidores de aplicaciones y no hay ningún otro archivo jar slf4j.
¿Alguien tiene alguna idea de lo que puede estar pasando aquí?
Tuve el mismo problema con WebSphere 6.1. Como señaló Ceki, WebSphere estaba usando toneladas de archivos jar y uno de ellos apuntaba a una versión anterior de slf4j.
El respaldo No-Op ocurre solo con slf4j 1.6+, por lo que cualquier versión anterior generará una excepción y detendrá su implementación.
Hay una documentación en el sitio SLf4J que resuelve esto. Seguí eso y agregué slf4j-simple-1.6.1.jar
a mi solicitud junto con slf4j-api-1.6.1.jar
la que ya tenía.
Si usa Maven, agregue las siguientes dependencias, siendo ${slf4j.version}
la última versión de slf4j
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>${slf4j.version}</version>
</dependency>
Esto resolvió mi problema.
Esto es para aquellos que llegaron aquí desde la búsqueda de Google.
Si usa Maven simplemente agregue lo siguiente
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
</dependency>
O
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.6.4</version>
</dependency>
Simplemente agregue esto a su pom.xml
:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.21</version>
</dependency>