it-swarm.com.de

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

  • Zu 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 das Entfernen von m2e 1.1 und das Zurückrollen auf m2e 1.0 funktionierte alles gut. Ich habe versucht, das Problem in Windows und Ubuntu zu wiederholen, und es wurde mir genau derselbe Fehler angezeigt. Zahlreiche Konfigurationen von slf4j-api und logback wurden getestet, aber keine scheint zu funktionieren. 

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

  • New Maven Project -> Maven-Archetyp-Schnellstart 

    und 

  • New Maven Project -> Einfaches Projekt ohne Archetypauswahl 

    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) unter Mac, 32 Bit unter Ubuntu und 64 und 32 Bit unter Windows. Getestete Neuinstallationen von Juno Classic, Juno Modeling-Tools, Kepler-Standard, Kepler-Modeling-Tools und führten zu demselben Fehler. 

Der Fehler erscheint bei clean, install, test, deploy, generate-sources, validate, compile, Paket, integrationstest, verify und Kombinationen des Ziels sauber mit den übrigen Zielen. Sie erscheint auch mit den Parametern -e und -X. Es wurde versucht, das m2e-Repository zu löschen und von Grund auf neu zu laden, jedoch ohne Erfolg. Es sollte erwähnt werden, dass alle oben genannten Systeme auf 3 verschiedenen Maschinen und in der virtuellen Box getestet wurden, jedoch derselbe Fehler aufgetreten ist. 

Ich habe alle verschiedenen logback -Konfigurationen (von 1.0.4 bis 1.0.13) ausprobiert, 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-simple -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>

Versucht alle unterschiedlichen (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>

Nicht zuletzt 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 werden Den gleichen Fehler verursachen). 

    • Installieren Sie m2e - Maven Integration für Eclipse

      ODER

    • Aktualisieren Sie Ihre m2e-Version auf 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-> Auswählen
      maven-archetype-quickstart aus dem Katalog-> Fertigstellen

      ODER

    • Wählen Sie Datei-> Neu-> Andere-> Maven-Projekt-> Klicken Sie auf Weiter-> Auswählen. Ein einfaches Projekt erstellen (Archetypauswahl überspringen) -> Artefakt-Info vervollständigen-> Fertigstellen

  • Klicken Sie mit der rechten Maustaste auf das Projekt-> Ausführen als-> Neuinstallation (oder ein anderes oben genanntes Ziel).

Die erste Zeile 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.

P.S. Bestehende Projekte führen nach Aktualisierung der m2e-Version auf 1.1.0.20120530-0009, 1.2.0.20120903-1050, 1.3.0.20130129-0926, 1.4.0.20130601-0317 zum gleichen Fehler


Aktualisierung

EDIT

m2e-Support-Site: 

  • Die obige Frage wurde als Fehler in der m2e-Support-Site veröffentlicht und die Antwort von Igor Fedorenko war das

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

    Um den obigen Fehler anzuzeigen, lesen Sie bitte die offizielle Supportseite m2e


EDIT 2

  • Die obige Fehleranzeige ist present auch an m2e Version 1.2.0.20120903-1050


EDIT 3

  • Die obige Fehleranzeige ist present auch an m2e Version 1.3.0.20130129-0926


EDIT 4

  • Die obige Fehleranzeige ist present auch an m2e Version 1.4.0.20130601-0317


EDIT 5

                              ***Reported FIXED***
  • Der obige Fehler wird für m2e Version 1.5.0/Luna M3 (Ziel-Meilenstein) als behoben gemeldet. Die Version steht noch nicht zum Download zur Verfügung. 
  • Luna M3 ist für den 15. November geplant
  • Die neuesten Entwickler sind verfügbar hier
  • Weitere Informationen zu den m2e-Meilensteinen finden Sie im m2e-Hauptlager

Ich kann diesen Fehler auch bestätigen. 

Workaround: verwendet externer Maven innerhalb von m2Eclipse anstelle des eingebetteten Maven.

Dies geschieht in drei Schritten: 

1 Install maven auf lokalem Rechner (der Testrechner 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, Plattform Kodierung: UTF-8 Betriebssystemname: "linux" -Version: "2.6.35-32-generic" Arch: "AMD64" -Familie: "Unix"

2 Maven extern ausführen Verknüpfung zum Ausführen von Maven von der Konsole aus

> 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 in m2Eclipse: von eingebetteter Maven zu lokalem Maven wechseln 

  • finden Sie heraus, wo sich das Installationsverzeichnis von local maven home befindet (mvn --version oder google für Ihren MAVEN_HOME für mich dies hat mir geholfen das ist /usr/share/maven2)
  • in Eclipse Menu-> Window-> Preferences-> Maven-> Installation-> geben Sie diese Zeichenfolge ein. Dann sollten Sie zu Ihrem neuen externen Maven gewechselt haben.
  • führen Sie dann Ihr Projekt als z. "Maven Test". 

Die Fehlermeldung sollte weg sein.

73
tverrbjelke

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

slf4j

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

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

Hatte einen ähnlichen Fehler mit dem gleichen Ergebnis mit 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'

Auskommentierte Zeile ist diejenige, die die Fehlerausgabe verursacht hat. Ich glaube, du kannst das auf Maven übertragen. 

4
tomasb

Sie haben keine Version in Ihrer Maven-Abhängigkeitsdatei angegeben. Dies ist der Grund, warum sie nicht die neueste Dose auswählt
Außerdem benötigen Sie eine weitere Abhängigkeit von slf4j-log4j12 Artifact-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.

2
khan

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

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

Hatte das Problem schon einmal angeschaut, nachdem es aufgetaucht war. Glauben Sie, dass dies eine gute Lektüre für andere sein wird, die mit derselben Ausgabe hier herunterkommen:

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

1
Prince

Ich hatte ein ähnliches Problem für meine Spring Boot - Gradle - Anwendung, die auf Eclipse Luna ausgeführt wurde .. __ Ich könnte es lösen, indem Sie manuell einen Eintrag in den .classpath meines Projekts hinzufügen

<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, diese Lösung zu folgen. Die Umsetzung ist jedoch von Fall zu Fall abhängig. Eine Möglichkeit der Befestigung ist die, die ich oben verwendet habe.

Hoffe das hilft.

1
Vipul Agarwal

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

Diese Warnung, d. H. Keine Fehlermeldung, wird gemeldet, wenn im Klassenpfad keine SLF4J-Provider gefunden werden konnten. 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 Provider vorhanden ist, verwendet SLF4J standardmäßig einen No-Operation-Logger-Provider (NOP).

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

0
avenugopalan