943 Stimmen

SLF4J: Die Klasse "org.slf4j.impl.StaticLoggerBinder" konnte nicht geladen werden.

Meine Anwendung soll sowohl auf tcServer als auch auf WebSphere 6.1 eingesetzt werden. Diese Anwendung verwendet ehCache und benötigt daher slf4j als Abhängigkeit. Als Ergebnis habe ich das slf4j-api.jar (1.6) jar zu meinem War-Datei-Bundle hinzugefügt.

Die Anwendung funktioniert in tcServer einwandfrei, bis auf den folgenden Fehler:

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.

Wenn ich jedoch in WebSphere einsetze, erhalte ich eine java.lang.NoClassDefFoundError: org.slf4j.impl.StaticLoggerBinder .

Auch begleitet von Failed to load class "org.slf4j.impl.StaticMDCBinder"

Ich habe die Klassenpfade beider Anwendungsserver überprüft und es gibt kein anderes slf4j jar.

Hat jemand eine Idee, was hier passieren könnte?

860voto

Prasanna Punkte 9715

Ich hatte das gleiche Problem mit WebSphere 6.1. Wie Ceki feststellte, gab es eine Menge Jars, die WebSphere verwendete, und eines davon verwies auf eine ältere Version von slf4j.

Der No-Op-Fallback funktioniert nur mit slf4j -1.6+. Alles, was älter ist, führt zu einer Exception und stoppt den Einsatz.

Es gibt eine Dokumentation in SLf4J-Website die das Problem löst. Ich habe das befolgt und Folgendes hinzugefügt slf4j-simple-1.6.1.jar zu meiner Bewerbung zusammen mit slf4j-api-1.6.1.jar die ich bereits hatte.

Wenn Sie Maven verwenden, fügen Sie die folgenden Abhängigkeiten hinzu, mit ${slf4j.version} unter die neueste Version von slf4j

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>${slf4j.version}</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>${slf4j.version}</version>
</dependency>

Damit ist mein Problem gelöst.

476voto

Igor Katkov Punkte 6070

Dies ist für diejenigen, die über die Google-Suche hierher gekommen sind.

Wenn Sie Maven verwenden, fügen Sie einfach Folgendes hinzu

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

Oder

   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
       <version>1.7.5</version>
   </dependency>
   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-simple</artifactId>
       <version>1.6.4</version>
   </dependency>

110voto

Benny Neugebauer Punkte 45468

Fügen Sie dies einfach zu Ihrem pom.xml :

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

66voto

Wolfgang Fahl Punkte 13424

Einige Antworten hier empfehlen, die slf4j-simple Abhängigkeit zu Ihrer maven pom Datei hinzuzufügen. Sie sollten vielleicht nach der aktuellsten Version suchen.

Unter https://mvnrepository.com/artifact/org.slf4j/slf4j-simple finden Sie die neueste Version der SLF4J Simple Binding. Wählen Sie die Version aus, die Ihnen am besten gefällt (die stabile Version von 2021-10 ist immer noch 1.7.32 von 2021-07) und fügen Sie sie in Ihre pom.xml ein.

Zu Ihrer Erleichterung sind hier einige Abhängigkeiten aufgeführt - sie sind aber möglicherweise nicht mehr aktuell, wenn Sie dies lesen!

Alpha-Version von 2021-08

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-simple</artifactId>
   <version>2.0.0-alpha5</version>
 </dependency>

Beta-Version vom Februar 2019

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.8.0-beta4</version>
</dependency>

Stabile Version 2021-07

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-simple</artifactId>
   <version>1.7.32</version>
</dependency>

Dank des unten stehenden Kommentars habe ich den Teil mit dem Geltungsbereichstest entfernt.

52voto

Ashish Punkte 13615

Sie müssen die folgende JAR-Datei in Ihren Klassenpfad aufnehmen: slf4j-simple-1.6.2.jar . Wenn Sie es nicht haben, laden Sie es bitte herunter. Bitte beziehen Sie sich auf http://www.slf4j.org/codes.html#multiple_bindings

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X