SLF4J: impossibile caricare la classe "org.slf4j.impl.StaticLoggerBinder". errore


115
  • Per quanto riguarda Eclipse IDE ( Indigo , Juno e Kepler (versioni a 32 e 64 bit))
  • Piattaforme : Windows , Ubuntu , Mac
  • versione m2e : 1.1.0.20120530-0009 , 1.2.0.20120903-1050 , 1.3.0.20130129-0926 ,
    1.4.0.20130601-0317

Informazioni generali

L'errore di cui sopra si è verificato dopo l'aggiornamento di m2e alla versione 1.1. Rimuovendo m2e 1.1 e tornando a m2e 1.0 tutto ha funzionato bene. Ho provato a ripetere il problema in Windows e Ubuntu e mi ha dato lo stesso identico errore. Sono state testate numerose configurazioni di slf4j-api e logback ma nessuna sembra funzionare.

L'errore appare in qualsiasi progetto maven anche senza dichiarare la dipendenza slf4j .

  • Nuovo progetto Maven -> maven-archetype-quickstart

    e

  • Nuovo progetto Maven -> Progetto semplice senza selezione di archetipi

    risultato a

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

Test di ambienti e configurazioni

Testato con Eclipse Indigo ed Eclipse Juno (32 e 64 bit entrambi) su Mac, 32 bit su Ubuntu e 64 e 32 bit su Windows. Sono state testate nuove installazioni di Juno Classic , Juno Modeling tools , Kepler Standard , Kepler Modeling Tools e ha prodotto lo stesso errore.

L'errore viene visualizzato con clean , install , test , deploy , generate-sources , validate , compile , package , integration-test , verifica e combinazioni dell'obiettivo clean con gli altri obiettivi. Appare anche con i parametri -e e -X . C'è stato un tentativo di eliminare il repository m2e e scaricarlo da zero, ma di nuovo senza successo. Dovrei menzionare che è stato testato in 3 macchine diverse e nella scatola virtuale tutti i sistemi di cui sopra, ma ha prodotto lo stesso errore.

Ho provato tutte le diverse configurazioni di logback (da 1.0.4 a 1.0.13) che risolvono le dipendenze slf4j-api e logback-core , ma producono tutte lo stesso errore:

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

Ho provato tutte le diverse configurazioni (da 1.6.1 a 1.7.5) slf4j-simple .

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

Ho provato tutte le diverse configurazioni (da 1.6.1 a 1.7.5) log4j-over-slf4j .

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

Ho provato tutte le diverse configurazioni (da 1.6.1 a 1.7.5) slf4j-jdk14 .

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

Ho provato tutte le diverse configurazioni (da 1.6.1 a 1.7.5) slf4j-log4j12 .

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

Ho provato la configurazione slf4j-nop 1.7.5 .

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

Ultimo ma non meno importante, i log vengono salvati e stampati nonostante l'errore.


Modi per riprodurre l'errore

  • Scarica Eclipse Juno, Indigo o Kepler a 32 o 64 bit (tutte le installazioni causeranno lo stesso errore).

    • Installa m2e - integrazione Maven per Eclipse

      O

    • Aggiorna la tua versione 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 )


    • Seleziona File-> Nuovo-> Altro-> Progetto Maven-> Fai clic su Avanti-> Seleziona
      maven-archetype-quickstart dal catalogo-> Fine

      O

    • Seleziona File-> Nuovo-> Altro-> Progetto Maven-> Fai clic su Avanti-> Seleziona Crea un progetto semplice (salta la selezione dell'archetipo) -> Completa le informazioni sull'artefatto-> Fine

  • Fare clic con il pulsante destro del mouse sul progetto-> Esegui come-> installazione pulita (o qualsiasi altro obiettivo menzionato sopra)

La prima riga sulla console sarà

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.

I progetti esistenti PS produrranno lo stesso errore dopo l'aggiornamento della versione m2e a 1.1.0.20120530-0009 , 1.2.0.20120903-1050 , 1.3.0.20130129-0926 , 1.4.0.20130601-0317


aggiornamenti

MODIFICARE

Sito di supporto m2e:

  • La domanda sopra è stata pubblicata come bug nel sito di supporto m2e e la risposta di Igor Fedorenko è stata questa

    Non ci sono piani immediati per sopprimere questo messaggio.

    Per visualizzare il bug di cui sopra, fare riferimento al sito di supporto ufficiale di m2e


MODIFICA 2

  • L'indicazione di errore sopra è presente anche M2E versione 1.2.0.20120903-1050


MODIFICA 3

  • L'indicazione di errore sopra è presente anche M2E versione 1.3.0.20130129-0926


MODIFICA 4

  • L'indicazione di errore sopra è presente anche M2E versione 1.4.0.20130601-0317


MODIFICA 5

                              ***Reported FIXED***
  • L'errore di cui sopra viene segnalato come corretto per m2e versione 1.5.0 / Luna M3 ( Target Milestone ). La versione non è ancora disponibile per il download.
  • Luna M3 è prevista per il 15 novembre .
  • L'ultima build di sviluppo è disponibile qui
  • Maggiori informazioni sulle pietre miliari di m2e si possono trovare nel repository principale di m2e .

@EliranMalka È lungo ma con una ragione. Cercare di aiutare le persone a evitare di fare le stesse domande e includere ogni dettaglio che potesse sembrare necessario per capire se stanno affrontando lo stesso problema non mi ha permesso di fare troppe scelte. :-)
Konstantinos Margaritis

Ho ricevuto questo errore durante il tentativo di utilizzare i dati della molla con neo4j che ho slf4jin entrambi slf4j-api-1.7.7e jcl-over-slf4j-1.7.7se provo a rimuovere qualcuno di essi ricevo un messaggio di errore che dice che la loro Loggerclasse è mancante. Cosa dovrei fare?
user1885868

@KonstantinosMargaritis puoi dirmi come risolvere questo problema con pom.xml, potrei farlo funzionare sulla configurazione locale ma su jenkins fallisce sempre.
vikramvi

Qual è la tua configurazione attuale @vikramvi?
Konstantinos Margaritis

@KonstantinosMargaritis grazie per essere tornato su questo. Mi sono reso conto che Maven era la versione 3.0 su Linux aggiornata all'ultima versione e ho provato di nuovo. questo ha risolto il problema. Ma ha dovuto passare l'intera giornata a cercare di scoprire cosa potrebbe essere sbagliato. Grazie comunque.
vikramvi

Risposte:


75

Posso anche confermare questo errore.

Soluzione alternativa: è utilizzare un Maven esterno all'interno di m2eclipse, invece del Maven incorporato.

Ciò avviene in tre fasi:

1 Installa Maven sulla macchina locale (la macchina di prova era Ubuntu 10.10)

mvn: versione

Apache Maven 2.2.1 (rdebian-4) Versione Java: 1.6.0_20 Home page Java: / usr / lib / jvm / java-6-openjdk / jre Impostazioni locali predefinite: de_DE, codifica piattaforma: UTF-8 Nome sistema operativo: "linux" versione: "2.6.35-32-generic" arch: "amd64" Famiglia: "unix"

2 Esegui Maven esternamente link come eseguire Maven dalla console

> 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 all'interno di m2eclipse: passa da Maven incorporato a Maven locale

  • scoprire dove l'installazione a casa Maven locale dir è ( mvn --versiono google per la vostra MAVEN_HOME, per me, questo mi ha aiutato che è /usr/share/maven2)
  • nel menu Eclipse-> Finestra-> Preferenze-> Maven-> Installazione-> inserisci quella stringa. Allora dovresti essere passato al tuo nuovo esperto esterno.
  • quindi esegui il tuo progetto come ad esempio "test maven".

Il messaggio di errore dovrebbe essere sparito.


1
Accetto la tua risposta poiché è l'unica soluzione alternativa per aggirare il fastidioso errore. Grazie mille per la tua risposta analitica. :) ..
Konstantinos Margaritis

3
hmm sono su Windows e sono passato alle nuove installazioni esterne, tuttavia l'errore persiste !?
stefan.at.wpf

4
scusa, funziona. Notare che c'è un'opzione per il runtime Maven (interno / esterno) nelle configurazioni di esecuzione. quindi, se ne usi uno salvato, assicurati di aggiornarlo.
stefan.at.wpf

@ stefan.at.wpf È bello sentire che funziona. Se vuoi, puoi iscriverti alla mailing list del bug e puoi essere informato nel caso qualcosa cambi.
Konstantinos Margaritis

2
Per me #mvn --versionè comodo mostrare il MAVEN_HOME.
biaobiaoqi

25

C'è una documentazione nel sito SLf4J per risolvere questo problema. L'ho seguito e ho aggiunto slf4j-simple-1.6.1.jar alla mia applicazione insieme a slf4j-api-1.6.1.jar che avevo già. Questo ha risolto il mio problema

slf4j


4
funziona, in Maven può aggiungere: <dependency> <groupId> org.slf4j </groupId> <artifactId> slf4j-simple </artifactId> <version> 1.XX </version> </dependency> // Basta sostituire con la tua versione
Enrique San Martín

@ Mohammed Irfan potrei aver bisogno di aggiungere questo twojar nella cartella libs in eclipse?
Erum

1
Sto usando una versione successiva di Maven e avevo seguito i passaggi precedenti, ma questa è stata la risposta che ha causato la risoluzione del problema - grazie :)
Rob Wilson

15

Se stai usando Gradle aggiungi questo:

dependencies { 
... 
compile "org.slf4j:slf4j-simple:1.7.9" 
... 
}

Funziona qui con Gradle !! Puoi spiegare cosa succede quando aggiungiamo quella libreria?
Felipe Pereira

5

Ha avuto un errore simile con lo stesso risultato con Gradle ed è stato in grado di risolverlo seguendo:

//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 riga fuori commento è quella che ha causato l'output dell'errore. Credo che tu possa trasferire questo a Maven.


3

Non hai specificato la versione nel tuo file delle dipendenze di Maven potrebbe essere questo il motivo per cui non sta scegliendo l'ultimo jar
Così come hai bisogno di un'altra dipendenza con l' slf4j-log4j12ID artefatto.
Includilo nel tuo file pom

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

Fammi sapere se l'errore non è stato ancora risolto,
ti consiglio anche di vedere questo link


3
Tutte le versioni dichiarate sono state verificate. Non l'ho dichiarato lì per evitare ripetizioni. Il tag è stato lasciato vuoto intenzionalmente. Si prega di notare che il problema di cui sopra è stato pubblicato come bug nel sito di supporto di m2e e non c'è modo di risolvere l'errore di cui sopra a meno che non venga soppresso dagli sviluppatori di m2e. Ho letto il sito numerose volte e ho incluso tutte le possibili librerie che potrebbero risolvere il problema. Sfortunatamente nessuna configurazione ha funzionato perché ha a che fare con m2e piuttosto che con le dipendenze dichiarate. L'errore precedente non viene visualizzato nella console Maven o Netbeans.ONLY in Eclipse.
Konstantinos Margaritis

1
slf4j-log4j12 è un altro collegamento insieme a slf4j-simple, slf4j-jdk14 e logback-classic. Ognuna delle dipendenze precedenti avrebbe dovuto risolvere il problema con l'associazione. Come ho spiegato in precedenza, il problema è con m2e. Grazie comunque.
Konstantinos Margaritis

3

Incolla questo codice nel tuo file pom.xml. Per me funziona.

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

Risolve l'errore "org.slf4j.impl.StaticLoggerBinder", ma ora sta registrando tutto, ho messo log4j.xml e log4j.properties (uno alla volta) in src / test / resources, ora tutti i framework nel mio progetto stanno registrando tonnellate di messaggi tranne le mie registrazioni.
OJVM

1

Avevo esaminato il problema dopo averlo emerso. Credo che questa sarà una buona lettura per gli altri che vengono qui con lo stesso problema:

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


si prega di fornire una risposta completa, non solo un collegamento.
slfan

@Prince Se leggi la descrizione della domanda puoi trovare una parte che dice "Per visualizzare il bug di cui sopra, fai riferimento al sito di supporto ufficiale di m2e" che punta all'URL che hai menzionato.
Konstantinos Margaritis

Oops .. Colpa mia. Scuse sincere!
Prince

1

Ho avuto il problema simile per la mia applicazione Spring Boot - Gradle in esecuzione su Eclipse Luna. Potrei risolverlo aggiungendo manualmente una voce nel .classpath del mio progetto

<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"/>

L'idea è seguire questa soluzione. Ma come implementare dipende da caso a caso. Un modo per risolvere è quello che ho usato sopra.

Spero che questo ti aiuti.


0

Questo non è un messaggio di errore ma un avvertimento. È spiegato molto chiaramente nel loro sito Web come:

Questo messaggio di avvertenza, cioè non un errore, viene riportato quando non è stato possibile trovare alcun provider SLF4J nel percorso classi. Posizionare uno (e solo uno) di slf4j-nop.jar slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar o logback-classic.jar sul percorso classi dovrebbe risolvere il problema. Tieni presente che questi provider devono scegliere come target slf4j-api 1.8 o versioni successive.

In assenza di un provider, SLF4J utilizzerà per impostazione predefinita un provider di logger senza operazioni (NOP).

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


0

Ho avuto lo stesso problema nello scrivere il programma produttore Kafka usando java. Questo errore sta arrivando a causa della libreria slf4j sbagliata. usa sotto slf4j-semplice dipendenza maven che risolverà il tuo problema.

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.6.1</version>
    <scope>test</scope>
</dependency>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.