ich diesen Fehler auszuschließen bin immer, wenn sie auf mein Projekt Unit-Tests ausgeführt werden:Gradle & SLF4J Verweigerung Abhängigkeiten transitiv Ergebnisse in Illegal
Caused by: java.lang.IllegalStateException: Detected both log4j-over-slf4j.jar AND bound slf4j-log4j12.jar on the class path, preempting StackOverflowError. See also http://www.slf4j.org/codes.html#log4jDelegationLoop for more details.
at org.slf4j.impl.Log4jLoggerFactory.<clinit>(Log4jLoggerFactory.java:54)
... 29 more
ich SLF4J, aber nicht den Konflikt müssen, dass die folgenden Abhängigkeiten einrichten wird:
dependencies {
compile("org.springframework:spring-core:$springVersion")
compile("org.springframework:spring-jdbc:$springVersion")
// compile("org.springframework:spring-orm:$springVersion"
compile("org.springframework:spring-tx:$springVersion")
compile("org.springframework.data:spring-data-jpa:1.10.1.RELEASE") {
exclude module: "slf4j-api"
exclude module: "slf4j-over-slf4j"
exclude module: "jcl-over-slf4j"
}
// tag::jetty[]
compile("org.springframework.boot:spring-boot-starter-web:1.3.5.RELEASE") {
exclude module: "spring-boot-starter-tomcat"
exclude module: "slf4j-api"
exclude module: "slf4j-over-slf4j"
exclude module: "jcl-over-slf4j"
}
compile("org.springframework.boot:spring-boot-starter-jetty")
// end::jetty[]
// tag::actuator[]
compile("org.springframework.boot:spring-boot-starter-actuator")
// end::actuator[]
testCompile("junit:junit")
compile(group: 'org.hibernate.javax.persistence', name: 'hibernate-jpa-2.1-api', version: '1.0.0.Final')
compile("org.apache.velocity:velocity:1.7")
compile(group: 'org.slf4j', name: 'slf4j-api', version: '1.7.21')
compile('org.slf4j:log4j-over-slf4j:1.7.21')
compile(group: 'org.projectlombok', name: 'lombok', version: '1.16.8')
testCompile("org.springframework.boot:spring-boot-starter-test")
testCompile(group: 'junit', name: 'junit', version: '4.11')
}
ich den Fehler über stoppen kann:
configurations {
all*.exclude group: "org.slf4j"
}
aber dann bekomme ich ClassNotFoundExceptions
zur Laufzeit, weil slf4j benötigt wird (und seine Adapter).
Irgendwelche Ideen? Ich möchte nur slf4j von Spring Abhängigkeiten ausschließen. Ich habe viele Threads zu diesem Thema gesehen, aber nicht gelöst - sind meine Ausschlüsse korrekt?
Ich habe eigentlich egal, ich will es einfach arbeiten! Los geht's mit log4j - wie löse ich es? –
'configurations.all {ausschließen group: 'org.slf4j', modul: 'slf4j-over-slf4j'}' btw. Sie sollten 'slf4j-api' nicht ausschließen und wenn Sie die Protokollierung von libs, die java commons logging verwenden, sollten Sie' jcl-over-slf4j' nicht ausschließen. Entfernen Sie natürlich auch die explizite Abhängigkeit von 'log4j-over-slf4j'. Fügen Sie dann 'slf4j-log4j12' hinzu und konfigurieren Sie' log4j' entsprechend Ihren Anforderungen. – Vampire
Danke für die Hilfe. Ich habe Spring-Boot-Starter-Logging entfernt und es hat alles aussortiert. –