SLF4J: Fehler beim Laden der Klasse "org.slf4j.impl.StaticLoggerBinder". Error

115
  • In Bezug auf Eclipse IDE ( Indigo , Juno und Kepler (32- und 64-Bit-Versionen))
  • Plattformen : Windows , Ubuntu , Mac
  • m2e-Version : 1.1.0.20120530-0009 , 1.2.0.20120903-1050 , 1.3.0.20130129-0926 ,
    1.4.0.20130601-0317

Allgemeine Information

Der obige Fehler trat nach dem Update des m2e auf Version 1.1 auf. Durch Entfernen von m2e 1.1 und Zurücksetzen auf m2e 1.0 hat alles einwandfrei funktioniert. Ich habe versucht, das Problem in Windows und Ubuntu zu wiederholen, und es gab mir genau den gleichen Fehler. Zahlreiche Konfigurationen von slf4j-api und logback wurden getestet, aber keine scheint zu funktionieren.

Der Fehler tritt in jedem Maven-Projekt auf, auch ohne die Abhängigkeit von slf4j zu deklarieren .

  • Neues Maven-Projekt -> Maven-Archetyp-Schnellstart

    und

  • Neues Maven-Projekt -> Einfaches Projekt ohne Auswahl des Archetyps

    Ergebnis zu

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

Umgebung und Konfigurationen testen

Getestet mit Eclipse Indigo und Eclipse Juno (32 und 64 Bit) auf Mac, 32 Bit unter Ubuntu und 64 und 32 Bit unter Windows. Getestete Neuinstallationen von Juno Classic , Juno Modeling Tools , Kepler Standard und Kepler Modeling Tools und ergaben den gleichen Fehler.

Der Fehler tritt beim Bereinigen , Installieren , Testen , Bereitstellen , Generieren von Quellen , Validieren , Kompilieren , Packen , Integrationstests , Überprüfen und Kombinieren des Ziels Bereinigen mit den übrigen Zielen auf. Es erscheint auch mit den Parametern -e und -X . Es wurde versucht, das m2e-Repository zu löschen und von Grund auf neu herunterzuladen, jedoch erneut ohne Erfolg. Es sollte erwähnt werden, dass es in 3 verschiedenen Maschinen und einer virtuellen Box aller oben genannten Systeme getestet wurde, aber den gleichen Fehler verursachte.

Versuchte alle verschiedenen Logback- Konfigurationen (von 1.0.4 bis 1.0.13), die die Abhängigkeiten von slf4j-api und logback-core auflösen , aber alle den gleichen Fehler erzeugen:

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

Versuchte alle verschiedenen (von 1.6.1 bis 1.7.5) slf4j-einfachen Konfigurationen.

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

Versuchte alle verschiedenen (von 1.6.1 bis 1.7.5) log4j-over-slf4j- Konfigurationen.

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

Versuchte alle verschiedenen (von 1.6.1 bis 1.7.5) slf4j-jdk14- Konfigurationen.

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

Versuchte alle verschiedenen (von 1.6.1 bis 1.7.5) slf4j-log4j12- Konfigurationen.

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

Versuchte slf4j-nop 1.7.5 Konfiguration.

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

Last but not least werden die Protokolle trotz des Fehlers gespeichert und gedruckt.


Möglichkeiten, den Fehler zu reproduzieren

  • Laden Sie Eclipse Juno, Indigo oder Kepler 32 oder 64 Bit herunter (alle Installationen verursachen den gleichen Fehler).

    • Installieren Sie m2e - Maven Integration für Eclipse

      ODER

    • Aktualisieren Sie Ihre M2e Version 1.1.0.20120530-0009 oder 1.2.0.20120903-1050 oder 1.3.0.20130129-0926 oder 1.4.0.20130601-0317 )


    • Wählen Sie Datei-> Neu-> Andere-> Maven-Projekt-> Klicken Sie auf Weiter-> Wählen Sie
      Maven-Archetyp-Schnellstart aus dem Katalog-> Fertig stellen

      ODER

    • Wählen Sie Datei-> Neu-> Andere-> Maven-Projekt-> Klicken Sie auf Weiter-> Wählen Sie Einfaches Projekt erstellen (Archetypauswahl überspringen) -> Artefaktinfo vervollständigen-> Fertig stellen

  • Klicken Sie mit der rechten Maustaste auf das Projekt-> Läuft als-> Neuinstallation (oder ein anderes oben genanntes Ziel).

Die erste Zeile auf der Konsole wird sein

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 Bestehende Projekte erzeugen nach dem Aktualisieren der m2e-Version auf 1.1.0.20120530-0009 , 1.2.0.20120903-1050 , 1.3.0.20130129-0926 , 1.4.0.20130601-0317 denselben Fehler


Aktualisierung

BEARBEITEN

m2e Support-Site:

  • Die obige Frage wurde als Fehler auf der m2e-Support-Website veröffentlicht und die Antwort von Igor Fedorenko lautete:

    Es gibt keine unmittelbaren Pläne, diese Nachricht zu unterdrücken.

    Informationen zum Anzeigen des obigen Fehlers finden Sie auf der offiziellen Support-Website von m2e


BEARBEITEN 2

  • Die obige Fehleranzeige ist vorhanden auch M2e Version 1.2.0.20120903-1050


BEARBEITEN 3

  • Die obige Fehleranzeige ist vorhanden auch M2e Version 1.3.0.20130129-0926


BEARBEITEN 4

  • Die obige Fehleranzeige ist vorhanden auch M2e Version 1.4.0.20130601-0317


BEARBEITEN 5

                              ***Reported FIXED***
  • Der obige Fehler wird als für feste berichtet M2e Version 1.5.0 / Luna M3 ( Ziel Milestone ). Die Version steht noch nicht zum Download zur Verfügung.
  • Luna M3 ist für den 15. November geplant .
  • Die neuesten Entwickler-Builds finden Sie hier
  • Weitere Informationen zu den Meilensteinen von m2e finden Sie im Hauptrepository von m2e .
Konstantinos Margaritis
quelle
@EliranMalka Es ist lang, aber mit einem Grund. Der Versuch, Menschen dabei zu helfen, nicht dieselben Fragen zu stellen und jedes Detail einzubeziehen, das notwendig erscheint, um zu verstehen, ob sie mit demselben Problem konfrontiert sind, ließ mich nicht allzu viele Entscheidungen treffen. :-)
Konstantinos Margaritis
Ich habe diesen Fehler erhalten, als ich versucht habe, Federdaten mit neo4j zu verwenden, die ich slf4jin beiden habe, slf4j-api-1.7.7und jcl-over-slf4j-1.7.7wenn ich versuche, jemanden von ihnen zu entfernen, erhalte ich eine Fehlermeldung, dass ihre LoggerKlasse fehlt. Was soll ich machen?
user1885868
@KonstantinosMargaritis Kannst du bitte sagen, wie man das mit pom.xml behebt? Ich könnte es beim lokalen Setup zum Laufen bringen, aber bei Jenkins schlägt es immer fehl.
Vikramvi
Was ist Ihr aktuelles Setup @vikramvi?
Konstantinos Margaritis
@KonstantinosMargaritis, danke, dass du darauf zurückgekommen bist. Ich erkannte, dass Maven eine Version 3.0 unter Linux war, die auf die neueste Version aktualisiert wurde, und versuchte es erneut. Dies hat das Problem behoben. Musste aber den ganzen Tag damit verbringen herauszufinden, was falsch sein könnte. Trotzdem danke.
Vikramvi

Antworten:

75

Ich kann diesen Fehler auch bestätigen.

Problemumgehung: Verwenden Sie einen externen Maven in m2eclipse anstelle des eingebetteten Maven.

Dies geschieht in drei Schritten:

1 Installieren Sie maven auf einem lokalen Computer (der Testcomputer war Ubuntu 10.10).

mvn --version

Apache Maven 2.2.1 (rdebian-4) Java-Version: 1.6.0_20 Java-Startseite: / usr / lib / jvm / java-6-openjdk / jre Standardgebietsschema: de_DE, Plattformcodierung: UTF-8 Betriebssystemname: "linux" version: "2.6.35-32-generic" arch: "amd64" Familie: "unix"

2 Maven extern ausführen Link, wie Maven von der Konsole ausgeführt wird

> 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 innerhalb von m2eclipse: Wechseln Sie vom eingebetteten Maven zum lokalen Maven

  • Finden Sie heraus, wo sich das lokale Installationsverzeichnis mvn --versionfür Maven Home befindet ( oder googeln Sie für Ihr MAVEN_HOME, für mich hat mir das geholfen/usr/share/maven2 )
  • Geben Sie in Eclipse Menu-> Window-> Preferences-> Maven-> Installation-> diese Zeichenfolge ein. Dann hätten Sie zu Ihrem neuen externen Maven wechseln sollen.
  • Führen Sie dann Ihr Projekt als zB "Maventest" aus.

Die Fehlermeldung sollte verschwunden sein.

tverrbjelke
quelle
1
Ich akzeptiere Ihre Antwort, da dies die einzige Problemumgehung ist, um den lästigen Fehler zu umgehen. Vielen Dank für Ihre analytische Antwort. :) ..
Konstantinos Margaritis
3
hmm ich bin unter Windows und habe auf die neuen externen Installationen umgestellt, aber der Fehler besteht immer noch!?
stefan.at.wpf
4
Entschuldigung, es funktioniert. Beachten Sie, dass es in den Laufkonfigurationen eine Option für die Maven-Laufzeit (intern / extern) gibt. Wenn Sie also eine gespeicherte verwenden, müssen Sie diese aktualisieren.
stefan.at.wpf
@ stefan.at.wpf Gut zu hören, dass es funktioniert. Wenn Sie möchten, können Sie die Mailingliste des Fehlers abonnieren und sich informieren, falls sich etwas ändert.
Konstantinos Margaritis
2
Für mich #mvn --versionist es praktisch, das MAVEN_HOME zu zeigen.
Biaobiaoqi
25

Auf der SLf4J-Site befindet sich eine Dokumentation, um dieses Problem zu beheben. Ich folgte dem und fügte meiner Anwendung slf4j-simple-1.6.1.jar hinzu, zusammen mit slf4j-api-1.6.1.jar, das ich bereits hatte. Dies löste mein Problem

slf4j

Mohammed Irfan Tirupattur
quelle
4
Dies funktioniert, in maven kann hinzugefügt werden: <dependency> <groupId> org.slf4j </ groupId> <artifactId> slf4j-simple </ifactId> <version> 1.XX </ version> </ dependency> // Einfach durch ersetzen Ihre Version
Enrique San Martín
@ Mohammed Irfan Muss ich diese zwei Gläser im libs-Ordner in Eclipse hinzufügen?
Erum
1
Ich verwende eine spätere Version von Maven und habe die obigen Schritte ausgeführt, aber dies war die Antwort, die dazu führte, dass das Problem behoben wurde - danke :)
Rob Wilson
15

Wenn Sie Gradle verwenden, fügen Sie Folgendes hinzu:

dependencies { 
... 
compile "org.slf4j:slf4j-simple:1.7.9" 
... 
}
Dias
quelle
Es funktioniert hier mit Gradle !! Können Sie erklären, was passiert, wenn wir diese Bibliothek hinzufügen?
Felipe Pereira
5

Hatte einen ähnlichen Fehler mit dem gleichen Ergebnis bei Gradle und konnte ihn folgendermaßen lösen:

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

Die auskommentierte Zeile hat die Fehlerausgabe verursacht. Ich glaube, Sie können dies auf Maven übertragen.

tomasb
quelle
3

Sie haben in Ihrer Maven-Abhängigkeitsdatei keine Version angegeben. Dies ist möglicherweise der Grund, warum nicht das neueste JAR ausgewählt wird.
Außerdem benötigen Sie eine weitere Abhängigkeit mit der slf4j-log4j12Artefakt-ID.
Fügen Sie dies in Ihre POM-Datei ein

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

Lassen Sie mich wissen, wenn der Fehler immer noch nicht behoben ist.
Ich empfehle Ihnen auch, diesen Link zu sehen

Khan
quelle
3
Alle angegebenen Versionen wurden überprüft. Ich habe es dort nicht deklariert, um Wiederholungen zu vermeiden. Das Tag wurde absichtlich leer gelassen. Bitte beachten Sie, dass das oben genannte Problem als Fehler auf der m2e-Support-Website veröffentlicht wurde und es keine Möglichkeit gibt, den oben genannten Fehler zu beheben, es sei denn, dies wird von den m2e-Entwicklern unterdrückt. Ich habe die Website mehrfach gelesen und alle möglichen Bibliotheken aufgenommen, die das Problem beheben könnten. Leider hat keine Konfiguration funktioniert, da sie eher mit m2e als mit den deklarierten Abhängigkeiten zu tun hat. Der obige Fehler wird in der Maven-Konsole oder in Netbeans.NUR in Eclipse nicht angezeigt.
Konstantinos Margaritis
1
slf4j-log4j12 ist neben slf4j-simple, slf4j-jdk14 und logback-classic eine weitere Bindung. Jede der oben genannten Abhängigkeiten sollte das Problem mit der Bindung behoben haben. Wie ich zuvor erklärt habe, liegt das Problem bei m2e. Danke trotzdem.
Konstantinos Margaritis
3

Fügen Sie diesen Code in Ihre Datei pom.xml ein. Für mich geht das.

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.6.1</version>
    <scope>test</scope>
</dependency>
james25
quelle
Es löst den Fehler "org.slf4j.impl.StaticLoggerBinder", aber jetzt wird alles protokolliert. Ich habe log4j.xml und log4j.properties (einzeln) in src / test / resources abgelegt. Jetzt protokollieren alle Frameworks in meinem Projekt Tonnen von Nachrichten außer meinen eigenen Protokollierungen.
ABl.
1

Hatte das Problem untersucht, nachdem es aufgetaucht war. Glauben Sie, dass dies eine gute Lektüre für andere sein wird, die mit demselben Problem hierher kommen:

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

Prinz
quelle
Bitte geben Sie eine vollständige Antwort, nicht nur einen Link.
Slfan
@Prince Wenn Sie die Beschreibung der Frage lesen, finden Sie einen Teil mit der Aufschrift "Informationen zum Anzeigen des obigen Fehlers finden Sie auf der offiziellen Support-Website von m2e", der auf die von Ihnen erwähnte URL verweist.
Konstantinos Margaritis
Ups .. Mein schlechtes. Aufrichtige Entschuldigungen!
Prinz
1

Ich hatte das ähnliche Problem für meine Spring Boot - Gradle - Anwendung, die auf Eclipse Luna ausgeführt wurde. Ich könnte es beheben, indem ich manuell einen Eintrag im Klassenpfad meines Projekts hinzufüge

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

Die Idee ist, dieser Lösung zu folgen . Die Implementierung hängt jedoch von Fall zu Fall ab. Eine Art der Reparatur ist die, die ich oben verwendet habe.

Hoffe das hilft.

Vipul Agarwal
quelle
0

Dies ist keine Fehlermeldung, sondern eine Warnung. Es wird auf ihrer Website sehr deutlich erklärt als:

Diese Warnung, dh keine Fehlermeldung, wird gemeldet, wenn im Klassenpfad keine SLF4J-Anbieter gefunden wurden. Das Platzieren eines (und nur eines) von slf4j-nop.jar slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar oder logback-classic.jar im Klassenpfad sollte das Problem lösen. Beachten Sie, dass diese Anbieter auf slf4j-api 1.8 oder höher abzielen müssen.

Wenn kein Anbieter vorhanden ist, verwendet SLF4J standardmäßig einen NOP-Protokollierungsanbieter (No-Operation).

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

Avenugopalan
quelle
0

Ich hatte das gleiche Problem beim Schreiben des Kafka-Produzentenprogramms mit Java. Dieser Fehler tritt aufgrund der falschen slf4j-Bibliothek auf. Verwenden Sie die folgende slf4j-einfache Maven-Abhängigkeit, die Ihr Problem behebt.

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