Gradle类路径包含多个SLF4J绑定

时间:2019-03-11 15:50:33

标签: gradle slf4j lombok

我遇到编译错误。我不确定哪个依赖项会导致此错误。 我正在使用@ slf4j lombok批注在类中实现日志记录。

  

SLF4J:类路径包含多个SLF4J绑定。   SLF4J:在[jar:file:/home/andrius/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-log4j12/1.7.25/110cefe2df103412849d72ef7a67e4e91e4266b4/slf4j-log4j12-1.7.25中找到绑定。 jar!/org/slf4j/impl/StaticLoggerBinder.class]   SLF4J:在[jar:file:/home/andrius/.gradle/caches/modules-2/files-2.1/ch.qos.logback/logback-classic/1.2.3/7c4f3c474fb2c041d8028740440937705ebb473a/logback-classic-1.2中找到绑定。 3.jar!/org/slf4j/impl/StaticLoggerBinder.class]

我不确定在哪个模块中以及应该排除哪些内容以避免这种情况。

下面我对Gradle依赖项的设置。

dependencies {
implementation('org.springframework.boot:spring-boot-starter') {
    exclude group: 'ch.qos.logback'
}
compileOnly('org.projectlombok:lombok:1.18.2')
testCompileOnly('org.projectlombok:lombok:1.18.2')
annotationProcessor('org.projectlombok:lombok:1.18.2')
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.springframework.boot:spring-boot-starter-data-jpa')
compile('net.sf.dozer:dozer:5.4.0')
compile('org.springframework.boot:spring-boot-starter-logging')
compile('io.springfox:springfox-swagger2:2.9.2')
compile('io.springfox:springfox-swagger-ui:2.9.2')
testImplementation('org.springframework.boot:spring-boot-starter-test') {
    exclude(module: 'spring-boot-starter-logging')
 }
}

1 个答案:

答案 0 :(得分:0)

有几件事要检查:

我发现gradle可能会粘滞其缓存,因此当遇到类似此类的持续问题时,我喜欢rm -rf ~/.gradle/caches-显然要小心,不要浪费过多的时间。

运行gradle dependencies来查找您的日志记录实现的来源。通常,您会发现在某个地方有一个库正在引入slf4j-log4j12,而另一个库中正在引入logback-classic。您似乎已经排除了ch.qos.logback从其插入的spring-boot-starter组,因此我猜测您希望排除该实现。因此,您想找出将ch.qos.logback插入的其他位置,并将其也排除在其中。

这是一个费力的过程,我觉得选择Logback-Classic对Spring有点过分自以为是,但这就是目前的样子。

不是一个很好的答案,但我希望这会有所帮助。