SLF4J: No se pudo cargar la clase "org.slf4j.impl.StaticLoggerBinder". error

115
  • Respecto a Eclipse IDE ( Indigo , Juno y Kepler (versiones de 32 y 64 bits))
  • Plataformas : Windows , Ubuntu , Mac
  • versión m2e : 1.1.0.20120530-0009 , 1.2.0.20120903-1050 , 1.3.0.20130129-0926 ,
    1.4.0.20130601-0317

Información general

El error anterior se produjo después de actualizar m2e a la versión 1.1. Al eliminar m2e 1.1 y volver a m2e 1.0, todo funcionó bien. Intenté repetir el problema en Windows y Ubuntu y me dio exactamente el mismo error. Se probaron numerosas configuraciones de slf4j-api y logback, pero ninguna parece funcionar.

El error aparece en cualquier proyecto maven incluso sin declarar la dependencia slf4j .

  • Nuevo proyecto Maven -> maven-archetype-quickstart

    y

  • Nuevo proyecto Maven -> Proyecto simple sin selección de arquetipo

    resultado de

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

Prueba de entornos y configuraciones

Probado con Eclipse Indigo y Eclipse Juno (32 y 64 bits ambos) en Mac, 32 bits en Ubuntu y 64 y 32 bits en Windows. Probé nuevas instalaciones de Juno Classic , Juno Modeling tools , Kepler Standard , Kepler Modeling Tools y produjo el mismo error.

El error aparece con limpiar , instalar , probar , implementar , generar fuentes , validar , compilar , empaquetar , integrar-probar , verificar y combinaciones de la meta limpia con las demás metas. Aparece también con los parámetros -e y -X . Hubo un intento de eliminar el repositorio de m2e y descargarlo desde cero, pero nuevamente sin éxito. Debería mencionar que se probó en 3 máquinas diferentes y en la caja virtual de todos los sistemas anteriores, pero produjo el mismo error.

Probé todas las configuraciones de logback diferentes (de 1.0.4 a 1.0.13) que resuelven las dependencias slf4j-api y logback-core , pero todas producen el mismo error:

<dependency>
   <groupId>ch.qos.logback</groupId>
   <artifactId>logback-classic</artifactId>
   <version></version>
</dependency>

Probé todas las configuraciones diferentes slf4j-simple (de 1.6.1 a 1.7.5 ) .

<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-simple</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>

Probé todas las configuraciones de log4j-over-slf4j diferentes (de 1.6.1 a 1.7.5) .

<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>log4j-over-slf4j</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>

Probé todas las configuraciones diferentes (de 1.6.1 a 1.7.5 ) slf4j-jdk14 .

<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-jdk14</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>

Probé todas las configuraciones diferentes (de 1.6.1 a 1.7.5 ) slf4j-log4j12 .

<dependency>
     <groupId>org.slf4j</groupId>
     <artifactId>slf4j-log4j12</artifactId>
     <version></version>
     <scope>compile</scope>
</dependency>

Probé la configuración slf4j-nop 1.7.5 .

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-nop</artifactId>
  <version>1.7.5</version>
  <scope>compile</scope>
</dependency>

Por último, pero no menos importante, los registros se guardan e imprimen a pesar del error.


Formas de reproducir el error

  • Descargue Eclipse Juno, Indigo o Kepler 32 o 64 bit (todas las instalaciones causarán el mismo error).

    • Instalar m2e: integración de Maven para Eclipse

      O

    • Actualice su versión de m2e a 1.1.0.20120530-0009 , o 1.2.0.20120903-1050 , o 1.3.0.20130129-0926 , o 1.4.0.20130601-0317 )


    • Seleccione Archivo-> Nuevo-> Otro-> Proyecto Maven-> Haga clic en Siguiente-> Seleccione
      maven-archetype-quickstart del catálogo-> Finalizar

      O

    • Seleccione Archivo-> Nuevo-> Otro-> Proyecto Maven-> Haga clic en Siguiente-> Seleccione Crear un proyecto simple (omitir la selección de arquetipo) -> Información completa del artefacto-> Finalizar

  • Haga clic derecho en el proyecto-> Ejecuta como-> instalación limpia (o cualquier otro objetivo mencionado anteriormente)

La primera línea de la consola será

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.

PS Los proyectos existentes producirán el mismo error después de actualizar la versión m2e a 1.1.0.20120530-0009 , 1.2.0.20120903-1050 , 1.3.0.20130129-0926 , 1.4.0.20130601-0317


Actualizaciones

EDITAR

sitio de soporte de m2e:

  • La pregunta anterior se publicó como un error en el sitio de soporte de m2e y la respuesta de Igor Fedorenko fue que

    No hay planes inmediatos para suprimir este mensaje.

    Para ver el error anterior, consulte el sitio de soporte oficial de m2e


EDITAR 2

  • La indicación de error anterior también está presente en m2e versión 1.2.0.20120903-1050


EDITAR 3

  • La indicación de error anterior también está presente en m2e versión 1.3.0.20130129-0926


EDITAR 4

  • La indicación de error anterior también está presente en m2e versión 1.4.0.20130601-0317


EDITAR 5

                              ***Reported FIXED***
  • Se informa que el error anterior está corregido para m2e versión 1.5.0 / Luna M3 ( Target Milestone ). La versión aún no está disponible para descargar.
  • Luna M3 está programado para el 15 de noviembre .
  • La última versión de desarrollo está disponible aquí
  • Puede encontrar más información sobre los hitos de m2e en el repositorio principal de m2e .
Margaritis de Konstantinos
fuente
@EliranMalka Es largo pero con una razón. Tratar de ayudar a las personas a evitar hacerse las mismas preguntas e incluir todos los detalles que pudieran parecer necesarios para comprender si están enfrentando el mismo problema no me permitió muchas opciones. :-)
Konstantinos Margaritis
Recibí este error al intentar usar datos de primavera con neo4j que tengo slf4jen ambos slf4j-api-1.7.7y jcl-over-slf4j-1.7.7si trato de eliminar a alguno de ellos Logger, aparece un mensaje de error que dice que falta su clase. ¿Qué tengo que hacer?
user1885868
@KonstantinosMargaritis, ¿puede decirme cómo solucionar este problema con pom.xml? Podría hacerlo funcionar en la configuración local, pero en jenkins siempre falla.
vikramvi
¿Cuál es su configuración actual @vikramvi?
Konstantinos Margaritis
@KonstantinosMargaritis gracias por volver a esto. Me di cuenta de que Maven tenía la versión 3.0 en Linux actualizada a la última versión y lo intenté de nuevo. esto solucionó el problema. Pero tuve que pasar todo el día tratando de averiguar qué podía estar mal. Gracias de todos modos.
vikramvi

Respuestas:

75

También puedo confirmar este error.

Solución alternativa: es utilizar maven externo dentro de m2eclipse, en lugar de su maven incrustado.

Eso se hace en tres pasos:

1 Instale maven en la máquina local (la máquina de prueba era Ubuntu 10.10)

mvn --version

Apache Maven 2.2.1 (rdebian-4) Versión de Java: 1.6.0_20 Inicio de Java: / usr / lib / jvm / java-6-openjdk / jre Configuración regional predeterminada: de_DE, codificación de plataforma: UTF-8 Nombre del sistema operativo: "linux" versión: "2.6.35-32-generic" arco: "amd64" Familia: "unix"

2 Ejecutar maven enlace externo cómo ejecutar maven desde la consola

> cd path-to-pom.xml
> mvn test
    [INFO] Scanning for projects...
    [INFO] ------------------------------------------------------------------------
    [INFO] Building Simple
    [INFO]    task-segment: [test]
    [INFO] ------------------------------------------------------------------------
    [...]
    [INFO] Surefire report directory: [...]/workspace/Simple/target/surefire-reports
    
    -------------------------------------------------------
     T E S T S
    -------------------------------------------------------
    Running net.tverrbjelke.experiment.MainAppTest
    Hello World
    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.042 sec
    
    Results :
    
    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
    
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESSFUL
    [INFO] ------------------------------------------------------------------------
    [...]

3 dentro de m2eclipse: cambie de maven integrado a maven local

  • averiguar dónde directorio de instalación local es experta en casa ( mvn --versiono Google para su MAVEN_HOME, para mí esto me ayudó a que es /usr/share/maven2)
  • en Menú eclipse-> Ventana-> Preferencias-> Maven-> Instalación-> ingrese esa cadena. Entonces debería haber cambiado a su nuevo experto externo.
  • luego ejecute su proyecto como, por ejemplo, "prueba de maven".

El mensaje de error debería desaparecer.

tverrbjelke
fuente
1
Acepto su respuesta ya que es la única solución para evitar el molesto error. Muchas gracias por tu respuesta analítica. :) ..
Konstantinos Margaritis
3
hmm, estoy en Windows y cambié a las nuevas instalaciones externas, sin embargo, ¿¡el error aún existe !?
stefan.at.wpf
4
lo siento, funciona. Tenga en cuenta que hay una opción para el tiempo de ejecución de maven (interno / externo) en las configuraciones de ejecución. así que si usa uno guardado, asegúrese de actualizarlo.
stefan.at.wpf
@ stefan.at.wpf Es bueno saber que funciona. Si lo desea, puede suscribirse en la lista de correo del error y puede informarse en caso de que algo cambie.
Konstantinos Margaritis
2
Para mí, #mvn --versiones conveniente mostrar el MAVEN_HOME.
biaobiaoqi
25

Hay una documentación en el sitio SLf4J para resolver esto. Seguí eso y agregué slf4j-simple-1.6.1.jar a mi aplicación junto con slf4j-api-1.6.1.jar que ya tenía. Esto resolvió mi problema

slf4j

Mohammed Irfan Tirupattur
fuente
4
esto funciona, en maven puede agregar: <dependency> <groupId> org.slf4j </groupId> <artifactId> slf4j-simple </artifactId> <version> 1.XX </version> </dependency> // Simplemente reemplace con tu versión
Enrique San Martín
@Mohammed Irfan ¿puedo necesitar agregar este twojar en la carpeta libs en eclipse?
Erum
1
Estoy usando una versión posterior de Maven y seguí los pasos anteriores, pero esta fue la respuesta que hizo que el problema desapareciera, gracias :)
Rob Wilson
15

Si está utilizando Gradle, agregue esto:

dependencies { 
... 
compile "org.slf4j:slf4j-simple:1.7.9" 
... 
}
Dias
fuente
¡Funciona aquí con Gradle! ¿Puede explicar qué sucede cuando agregamos esa biblioteca?
Felipe Pereira
5

Tuve un error similar con el mismo resultado con Gradle y pude resolverlo de la siguiente manera:

//compile 'org.slf4j:slf4j-api:1.7.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.1'

La línea sin comentarios es la que provocó la salida de error. Creo que puedes transferir esto a Maven.

tomasb
fuente
3

No ha especificado la versión en su archivo de dependencia de maven, puede ser por eso que no está eligiendo el último jar.
Además, necesita otra dependencia con slf4j-log4j12id de artefacto.
Incluya esto en su archivo pom

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.5.6</version>
</dependency>

Avíseme si el error aún no se resuelve
, también le recomiendo que vea este enlace

kan
fuente
3
Se comprobaron todas las versiones indicadas. No lo declaré allí para evitar repeticiones. La etiqueta se dejó vacía intencionalmente. Por favor, vea que el problema anterior se publicó como un error en el sitio de soporte de m2e y no hay forma de resolver el error anterior a menos que los desarrolladores de m2e lo supriman. He leído el sitio web varias veces e incluí todas las bibliotecas posibles que podrían resolver el problema. Desafortunadamente, ninguna configuración funcionó porque tiene que ver con m2e en lugar de las dependencias declaradas. El error anterior no se muestra en la consola de Maven ni en Netbeans. SOLO en Eclipse.
Konstantinos Margaritis
1
slf4j-log4j12 es otro enlace junto con slf4j-simple, slf4j-jdk14 y logback-classic. Cualquiera de las dependencias anteriores debería haber resuelto el problema con el enlace. Como expliqué anteriormente, el problema está en m2e. Gracias de cualquier manera.
Konstantinos Margaritis
3

Pegue este código en su archivo pom.xml. Esto funciona para mi.

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.6.1</version>
    <scope>test</scope>
</dependency>
james25
fuente
Resuelve el error "org.slf4j.impl.StaticLoggerBinder", pero ahora está registrando todo, puse log4j.xml y log4j.properties (uno a la vez) en src / test / resources, ahora todos los marcos de mi proyecto están registrando toneladas de mensajes excepto mis propios registros.
OJVM
1

Había pasado por alto el problema después de haberlo aflorado. Cree que esta será una buena lectura para otros que vienen aquí con el mismo problema:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=387064

Príncipe
fuente
proporcione una respuesta completa, no solo un enlace.
slfan
@Prince Si lee la descripción de la pregunta, puede encontrar una parte que dice "Para ver el error anterior, consulte el sitio de soporte oficial de m2e", que apunta a la URL que ha mencionado.
Konstantinos Margaritis
Ups .. Mi mal. ¡Disculpas sinceras!
Prince
1

Tuve un problema similar para mi aplicación Spring Boot - Gradle que se ejecuta en Eclipse Luna. Podría resolverlo agregando manualmente una entrada en el .classpath de mi proyecto

<classpathentry sourcepath="C:/Users/<username>/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-simple/1.7.7/3150039466ad03e6ef1c7ec1c2cbb0d96710cf64/slf4j-simple-1.7.7-sources.jar" kind="lib" path="C:/Users/<username>/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-simple/1.7.7/8095d0b9f7e0a9cd79a663c740e0f8fb31d0e2c8/slf4j-simple-1.7.7.jar"/>

La idea es seguir esta solución. Pero cómo implementarlo depende de cada caso. Una forma de arreglar es la que usé arriba.

Espero que esto ayude.

Vipul Agarwal
fuente
0

Este no es un mensaje de error sino una advertencia. Se explica muy claramente en su sitio web como:

Este mensaje de advertencia, es decir, no es un error, se informa cuando no se pueden encontrar proveedores SLF4J en la ruta de clases. Colocar uno (y solo uno) de slf4j-nop.jar slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar o logback-classic.jar en la ruta de clases debería resolver el problema. Tenga en cuenta que estos proveedores deben apuntar a slf4j-api 1.8 o posterior.

En ausencia de un proveedor, SLF4J utilizará por defecto un proveedor de registradores sin operación (NOP).

https://www.slf4j.org/codes.html#StaticLoggerBinder

avenugopalan
fuente
0

Tuve el mismo problema al escribir el programa de producción de Kafka usando java. Este error se debe a una biblioteca slf4j incorrecta. use a continuación la dependencia de maven slf4j-simple que solucionará su problema.

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.6.1</version>
    <scope>test</scope>
</dependency>
svk 041994
fuente