【问题标题】:Class path contains multiple SLF4J bindings with Gradle类路径包含多个与 Gradle 的 SLF4J 绑定
【发布时间】:2014-06-26 22:03:54
【问题描述】:

我在构建 Gradle 项目时遇到以下错误:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/Users/qliu/.gradle/caches/modules-2/files-2.1/ch.qos.logback/logback-classic/1.0.6/ba738848da3e6fffa0107771c75546eb6d407f3c/logback-classic-1.0.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/Users/qliu/.gradle/caches/modules-2/files-2.1/uk.org.lidalia/slf4j-test/1.1.0/f4f523049e041dea673bd421d7b0d61fb5e49548/slf4j-test-1.1.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [ch.qos.logback.classic.selector.DefaultContextSelector]

还有我的 Gradle 构建文件:

dependencies {
        // for output logger messages
        compile group: 'log4j', name: 'log4j', version: '1.2.17'

        // for testing outputed logger messages
        compile group: 'uk.org.lidalia', name: 'slf4j-test', version: '1.1.0'
}

如何删除警告?

【问题讨论】:

  • 然后呢?你有什么问题?
  • @Opal 我不知道怎么解决?

标签: unit-testing gradle slf4j


【解决方案1】:

您可以尝试通过resolutionStrategy 解决它,例如:

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        if (details.requested.name == 'log4j') {
            details.useTarget 'log4j:log4j:1.2.+'
        }
    }
}

查看文档:http://www.gradle.org/docs/current/dsl/org.gradle.api.artifacts.ResolutionStrategy.html

但是,如果您阅读 SLF4J 站点中的注释,它会说这只是一个警告: http://www.slf4j.org/codes.html#multiple_bindings

The warning emitted by SLF4J is just that, a warning. Even when multiple bindings are present, SLF4J will pick one logging framework/implementation and bind with it.

【讨论】:

    猜你喜欢
    • 2019-08-01
    • 2020-06-07
    • 1970-01-01
    • 2012-12-11
    • 2016-03-12
    • 2014-05-18
    • 2012-09-11
    • 2021-05-19
    相关资源
    最近更新 更多