试图解决臭名昭著的SLF4J多重绑定问题。这里有大约一百万个针对Maven的解决方案,但是没有一个可以翻译成Gradle(显然不是Gradle专家)。我已经尝试了一些解决方案,configurations
但是都没有正常工作。这是我遇到的错误(正如我提到的,我试图抑制警告)
SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:~/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-nop/1.7.22/3a4392836f875995446373b008e39cdb9a532fbe/slf4j-nop-1.7.22.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:~/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j-impl/2.7/382b070836b8940a02d28c936974db95e9bfc3a4/log4j-slf4j-impl-2.7.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 [org.slf4j.helpers.NOPLoggerFactory]
这是我的项目中唯一的SLF4J依赖项:
dependencies { compile group: 'org.slf4j', name: 'slf4j-nop', version: '1.7.+' ... }
另外,如果有帮助,我在运行单元测试时也会遇到问题。
更新:找出了一种依赖关系是使用org.apache.logging,而org.apache.logging则使用了SLF4J。如果我排除了apache logger的组,则整个程序将失败,因为该依赖项会引发ClassNotFoundException
。那么现在怎么办?
通过上面的评论能够解决。找到具有SLF4J的依赖关系后,我根据@badjir提到的内容添加了排除项。这解决了当前的主要问题,尽管LOG4J出现了另一个问题,如果继续进行下去,我将提出另一个问题。依赖项之一的示例:
compile (group: 'com.sparkjava', name: 'spark-core', version: '2.5.4') { exclude group: 'org.slf4j' }