Ich erhalte den folgenden Fehler. Es scheint, dass mehrere Protokollierungsframeworks an sl4j gebunden sind. Ich bin mir nicht sicher, wie ich das beheben soll. Jede Hilfe wird sehr geschätzt.
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/admin/.m2/repository/org/slf4j/slf4j-log4j12/1.6.4/slf4j-log4j12-1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/admin/.m2/repository/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
<exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions>
in den dependecies (von pom.xml) , die verursacht Konflikt half lösen das ProblemAntworten:
Behebung durch Hinzufügen des folgenden Ausschlusses in den Abhängigkeiten (von pom.xml), die zu Konflikten geführt haben.
quelle
slf4j-log4j12
) für alle anwendbar? oder sollten wir die version aus mvn dependency: tree herausfinden ?Gradle-Version;
quelle
Der Fehler enthält wahrscheinlich weitere Informationen wie diese (obwohl Ihre Glasnamen unterschiedlich sein können).
Es wurde festgestellt, dass der Konflikt aus zwei Gläsern mit dem Namen
logback-classic-1.2.3
und stammtlog4j-slf4j-impl-2.8.2.jar
.Führen Sie
mvn dependency:tree
in diesem übergeordneten Projektordner pom.xml Folgendes aus:Wählen Sie nun diejenige aus, die Sie ignorieren möchten (könnte ein heikles Unterfangen kosten, ich brauche mehr Hilfe dazu)
Ich habe mich entschieden, die aus
spring-boot-starter-data-jpa
(der obersten Abhängigkeit) importierte nicht durchspring-boot-starter
und durch zu verwendenspring-boot-starter-logging
, pom wird:in oben pom
spring-boot-starter-data-jpa
würde diespring-boot-starter
in der gleichen Datei konfigurierte verwenden, die ausschließtlogging
(es enthältlogback
)quelle
mvn dependency:tree
. Es ist so hilfreich ...Sbt-Version:
exclude("org.slf4j", "slf4j-log4j12")
An die Abhängigkeit anhängen , die transitiv eingeschlossen istslf4j-log4j12
. Wenn Sie beispielsweise Spark mit Log4j 2.6 verwenden:quelle
Ich löste durch Löschen dieses: spring-boot-Starter-log4j2
quelle
Ich habe diese JAR-Datei einfach ignoriert / entfernt.
quelle
Verwenden Sie einfach nur die erforderliche Abhängigkeit, nicht alle :))). Für mich muss diese Abhängigkeit für die normale Arbeit des Protokollierungsprozesses andere von pom.xml ausschließen
quelle
Dies ist ein Problem, da die StaticLoggerBinder.class-Klasse zu zwei verschiedenen Jars gehört. Diese Klasse verweist auf logback-classic-1.2.3.jar und dieselbe Klasse verweist auch auf log4j-slf4j-impl-2.10.0.jar. beide Glas im Klassenpfad. Daher besteht ein Konflikt zwischen ihnen. Dies ist der Grund dafür, dass die Protokolldatei nicht generiert wird, obwohl die Datei log4j2.xml im Klassenpfad [src / main / resource] vorhanden ist.
Wir haben eine der Optionen jar ausgewählt. Ich empfehle, die Datei log4j-slf4j-impl-2.10.0.jar zu verwenden und die Datei logback-classic-1.2.3.jar auszuschließen. Lösung: Öffnen Sie die POM-Datei und zeigen Sie die Abhängigkeitshierarchie [Eclipse] an, oder führen Sie den
Befehl mvn dependency: tree aus, um den Abhängigkeitsbaum und die Quelle der Abhängigkeit zu ermitteln, die die Abhängigkeit herunterladen. Finden Sie die widersprüchliche Abhängigkeit und schließen Sie sie aus. Versuchen Sie dies für die Springboot-Anwendung.
quelle
... org.codehaus.mojo cobertura-maven-plugin 2.7 test ch.qos.logback logback-classic tools com.sun ...
## Ich habe das behoben
... org.codehaus.mojo cobertura-maven-plugin 2.7 test ch.qos.logback logback-classic tools com.sun ...
quelle
Für mich stellte sich heraus, dass es sich nach dem Wechsel von log4j zu logback um ein Eclipse / Maven-Problem handelte. Schauen Sie in Ihre
.classpath
Datei und suchen Sie nach der Zeichenfolge"log4j"
.In meinem Fall hatte ich dort folgendes:
<classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-log4j12/1.7.1/slf4j-log4j12-1.7.1.jar"/> <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.17/log4j-1.2.17.jar" />
Das Entfernen dieser Einträge aus der Datei (oder Sie können sie neu generieren) hat das Problem behoben.
quelle
Für mich war die Antwort, einen Maven-Wiederaufbau zu erzwingen. In Eclipse:
quelle
Ich hatte das gleiche Problem. In meiner pom.xml hatte ich beides
Als ich die Spring-Boot-Starter-Web-Abhängigkeit löschte, war das Problem gelöst.
quelle
Die Kombination von
<scope>provided</scope>
und<exclusions>
hat bei mir nicht funktioniert.Ich musste das benutzen:
Wo
empty.jar
ist eine JAR-Datei mit buchstäblich nichts drin?quelle
Scheint das .m2-Verzeichnis zu entfernen und:
mvn install -DskipTests -T 4
Dieses Problem wurde für mich behoben.quelle