Mi aplicación se implementará tanto en tcServer como en WebSphere 6.1. Esta aplicación usa ehCache y, por lo tanto, requiere slf4j como dependencia. Como resultado, agregué el 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 despliegue en WebSphere obtengo un java.lang.NoClassDefFoundError: org.slf4j.impl.StaticLoggerBinder
.
También acompañado de Failed to load class "org.slf4j.impl.StaticMDCBinder"
He comprobado las rutas de clase de ambos servidores de aplicaciones y no hay otro jar slf4j.
¿Alguien tiene alguna idea de lo que puede estar sucediendo aquí?
Respuestas:
Tuve el mismo problema con WebSphere 6.1. Como señaló Ceki, había toneladas de frascos que WebSphere estaba usando y uno de ellos apuntaba a una versión anterior de slf4j.
El retroceso No-Op solo ocurre con slf4j -1.6+, por lo que cualquier cosa 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 aplicación junto conslf4j-api-1.6.1.jar
lo que ya tenía.Esto resolvió mi problema. Espero que ayude a otros que tienen este problema.
fuente
Esto es para aquellos que vinieron aquí desde la búsqueda de Google.
Si usa Maven simplemente agregue lo siguiente
O
fuente
slf4j-simple
no ser la misma versión queslf4j-api
? Probablemente funcionarían bien juntos, pero creo que es más seguro y una mejor práctica en general hacer que usen la misma versión. Además, si necesita habilitar el registro solo en la consola, por ejemplo, cuando ejecuta pruebas unitarias,slf4j-simple
parece ser suficiente (aunque fue para mí).Simplemente agregue esto a su pom.xml :
fuente
<groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.25</version> </dependency>
y el problema se resolvióEs necesario añadir siguiente archivo JAR en la ruta de clases:
slf4j-simple-1.6.2.jar
. Si no lo tiene, descárguelo. Consulte http://www.slf4j.org/codes.html#multiple_bindingsfuente
jul-to-slf4j
en mipom.xml
y acabo de agregarslf4j-simple
antes y funciona bien.Algunas respuestas aquí recomiendan agregar la dependencia slf4j-simple a su archivo maven pom. Es posible que desee verificar la versión más actual.
En https://mvnrepository.com/artifact/org.slf4j/slf4j-simple , encontrará la última versión de SLF4J Simple Binding. Elija el que mejor se adapte a usted (todavía 1.7.26 de 2019-02 es la versión estable a partir de 2019-07) e inclúyalo en su pom.xml.
Para su comodidad, aquí se muestran algunas dependencias, ¡pero es posible que no estén actualizadas cuando lea esto!
Versión alfa de 2019-10
Versión Beta de febrero de 2019
Versión estable 2019-12
Eliminé la parte de prueba de alcance gracias al comentario a continuación.
fuente
<scope>test</scope>
? En mi experiencia, al menos necesito unruntime
alcance para garantizar queslf4j-simple
esté en el classpath. Curioso cómo conseguiste que esto funcionara solo contest
alcance ...Estaba enfrentando el mismo error. He configurado slf4j-api, slf4j-log4j12 y log4j, en mi desarrollo local. Toda la configuración estaba bien, pero la dependencia slf4j-log4j12 que copié desde mvnrepository tenía un alcance de prueba
<scope>test</scope>
. Cuando eliminé esto, todo está bien.Algunas veces los errores tontos nos rompen la cabeza;)
fuente
En algún momento deberíamos ver la nota de la advertencia
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
.Puede buscar la razón por la que aparece esta advertencia.
La adición de uno de la jarra de
*slf4j-nop.jar
,slf4j-simple.jar
,slf4j-log4j12.jar
,slf4j-jdk14.jar
ologback-classic.jar*
en la ruta de clase debe resolver el problema.por ejemplo, agregue el código anterior a su
build.gradle
o el código correspondientepom.xml
para el proyecto maven.fuente
poner el archivo
slf4j-log4j12-1.6.4.jar
en el classpath hará el truco.fuente
Si está utilizando Maven para la gestión de dependencias, puede agregar la siguiente dependencia en pom.xml
Para usuarios que no son Maven Simplemente descargue la biblioteca y póngala en su classpath del proyecto.
Aquí puede ver los detalles: http://www.mkyong.com/wicket/java-lang-classnotfoundexception-org-slf4j-impl-staticloggerbinder/
fuente
This is not an error. This message tells you that you do not have any logger implementation (such as e.g. Logback) added in classpath, and therefore NOP (No Operation) log
Busque comentarios sarxos como lo menciona @Paul necesita agregar logback-classic. Otro enfoque de cambio a<artifactId>slf4j-simple</artifactId>
from<artifactId>slf4j-api</artifactId>
también hace el trabajo. AquíSLF4j es una abstracción para varios marcos de registro . Por lo tanto, aparte de tener slf4j, debe incluir cualquiera de su marco de registro como log4j o logback (etc.) en su classpath.
Para tener una idea, consulte el Primer paso del bebé en http://logback.qos.ch/manual/introduction.html
fuente
Slf4j es una fachada para los marcos de registro subyacentes como log4j, logback, java.util.logging.
Para conectarse con los marcos subyacentes, slf4j utiliza un enlace.
El error anterior se produce si se pierde el jar de enlace. Puede descargar este jar y agregarlo a classpath.
Para la dependencia de Maven,
Esta dependencia, además de slf4j-log4j12-1.7.21.jar, extraerá slf4j-api-1.7.21.jar y log4j-1.2.17.jar en su proyecto
Referencia: http://www.slf4j.org/manual.html
fuente
Estaba enfrentando un problema similar con las aplicaciones Spring-boot-2 con la biblioteca Java 9.
Agregar la siguiente dependencia en mi pom.xml me resolvió el problema:
fuente
En el caso de Websphere, tiene una versión anterior de slf4j-api.jar, 1.4.x. o 1.5.x tumbado en alguna parte. El comportamiento que observa en tcServer, que es una conmutación por error a NOP, se produce en slf4j versiones 1.6.0 y posteriores. Asegúrese de estar utilizando slf4j-api-1.6.x.jar en todas las plataformas y de que no haya una versión anterior de slf4j-api en la ruta de clase.
fuente
Me metí en este problema cuando recibo el siguiente error:
cuando estaba usando
slf4j-api-1.7.5.jar
en milibs
.A pesar de que probé con todos los frascos de complemento sugeridos
slf4j-log4j12-1.7.5.jar
,slf4j-simple-1.7.5
el mensaje de error aún persistía. El problema finalmente se resolvió cuando agreguéslf4j-jdk14-1.7.5.jar
las bibliotecas de Java.Obtenga el paquete slf4j completo en http://www.slf4j.org/download.html
fuente
Agregue las siguientes dependencias a pom para resolver este problema.
fuente
Como alternativa a la inclusión de jarras y soluciones maven puras, puede incluirlo desde maven con gradle.
Ejemplo para versión
1.7.25
Ponga esto dentro de las dependencias de su
build.gradle
archivo.fuente
Estoy trabajando en un proyecto Struts2 + Spring. Entonces necesita una dependencia
slf4j-api-1.7.5.jar
.Si ejecuto el proyecto, recibo un error como
Error al cargar la clase "org.slf4j.impl.StaticLoggerBinder"
Resolví mi problema agregando el
slf4j-log4j12-1.7.5.jar
.Entonces agregue este jar en su proyecto para resolver el problema.
fuente
Como dice el Manual SLF4J
y
Por lo tanto, debe elegir qué enlace desea usar.
Enlace NoOp (slf4j-nop)
Verifique la versión nueva en https://search.maven.org/search?q=g:org.slf4j%20AND%20a:slf4j-nop&core=gav
Encuadernación simple (slf4j-simple)
Verifique la versión nueva en https://search.maven.org/search?q=g:org.slf4j%20AND%20a:slf4j-simple&core=gav
Enlaces para los marcos de registro (java.util.logging, logback, log4j)
Necesita uno de estos enlaces si va a escribir el registro en un archivo.
Consulte la descripción y las instrucciones en https://www.slf4j.org/manual.html#projectDep
Mi opinión
Recomendaría Logback porque es un sucesor de log4j proyecto .
Consulte la última versión del enlace en https://search.maven.org/search?q=g:ch.qos.logback%20AND%20a:logback-classic&core=gav
Obtiene la salida de la consola de la caja, pero si necesita escribir registros en el archivo, simplemente coloque la
FileAppender
configuración ensrc/main/resources/logback.xml
o alsrc/test/resources/logback-test.xml
igual que esto:(Consulte la descripción detallada en el manual: https://logback.qos.ch/manual/configuration.html )
fuente
Ponga la dependencia mencionada anteriormente en el archivo pom.xml
fuente
Agregué esta dependencia para resolver este problema:
fuente
Según la documentación oficial de SLF4J
Simplemente agregue este jar junto con slf4j api.jar a su classpath para hacer las cosas. La mejor de las suertes
fuente
Lo resuelvo agregando esta biblioteca: slf4j-simple-1.7.25.jar Puede descargar esto en la web oficial https://www.slf4j.org/download.html
fuente
Encontré el mismo problema en payara 5.191
jcl-over-slf4j junto con slf4j-log4j12 resolvió el problema
fuente
Sé que esta publicación es un poco antigua, pero en caso de que alguien más se encuentre con este problema:
Agregue slf4j-jdk14-XXXjar a su CLASSPATH (donde XXX es el número de versión, por ejemplo, slf4j-jdk14-1.7.5.jar).
HTH Peter
fuente
Yo uso Jena y agrego la dependencia de pom.xml
Intento agregar slf4j-simple pero simplemente desaparece el error "SLF4J: Error al cargar la clase" org.slf4j.impl.StaticLoggerBinder "" pero logback-classic muestra información más detallada.
El documento oficial
fuente
la solución se indica en su sitio web oficial:
solución: he agregado a mi proyecto usando la investigación de maven en intellij y he elegido el slf4j-jdk14.jar.
fuente
Lo más probable es que su problema se deba a
<scope>test</scope>
(en algunos casos también<scope>provided</scope>
), como se mencionó en @thangaraj .La documentación dice:
Entonces, si no necesita dependencias para fines de prueba, puede usar en lugar de (lo que verá en mvnrepository ):
Sin ningún ámbito (de forma predeterminada sería un ámbito de compilación cuando no se proporciona ningún otro ámbito):
Esto es lo mismo que:
fuente
Aquí están mis 5 centavos ...
Tuve los mismos problemas al ejecutar pruebas. Así que lo arreglé agregando una implementación solo para el tiempo de ejecución de prueba. Estoy usando gradle para este proyecto.
fuente
Para mí, el problema era: al usar Hibernate, vi que ya usaba slf4j, y ya estaba en mi classpath, así que decidí usarlo. El siguiente paso: agregar imlementor para slf4j, así que agregué a maven:
¡Pero falló con error! SLF4J: Error al cargar la clase "org.slf4j.impl.StaticLoggerBinder"
La solución fue: la dependencia de Hibernate de slf4j era la versión 1.7.26 , y agregué la dependencia de versión menor 1.7.25 . Entonces, cuando arreglé esto, todo se puso bien
fuente
No agregué ninguna dependencia, solo cambié la forma en que las consumía.
Código de vista previa
(Descomente este código si está utilizando la versión de búsqueda elástica <7.0)
Código actual
Estoy usando bulkrequest y con eso elimino ese error.
fuente