如何摆脱“类路径包含多个SLF4J绑定”的警告?

时间:2013-02-12 16:42:37

标签: java warnings slf4j

这或多或少是一个“常见”问题,然而,我还没有找到一个好的答案。所以,再次,这是警告:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/eualin/.m2/repository/org/slf4j/slf4j-jcl/1.6.0/slf4j-jcl-1.6.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/eualin/.m2/repository/org/slf4j/slf4j-log4j12/1.5.11/slf4j-log4j12-1.5.11.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

以下是此问题的两种可能解决方案[1] [2]

假设他们都会为我工作,显然,他们只是黑客,而且我不确定我是否应该依赖他们中的任何一个。你会推荐我什么?请记住,在终端时不会出现警告;只有当我通过IntelliJIDEA运行应用程序时。

任何建议都受到高度赞赏。

4 个答案:

答案 0 :(得分:3)

SLF4J期望在任何应用程序运行时中只存在一个版本的StaticLoggerBinder。如果有多个,SLF4J无法保证将日志消息路由到相应的记录器。

SLF4J的体系结构要求只使用一个库来路由日志消息(例如slf4j-<logging framework>.jar)。当多个类路径通过应用程序服务器,IDE,启动脚本等进行播放时,SLF4J库可以多次包含。您可能需要寻找并查找在IntelliJIDEA中添加或修改类路径的位置(例如在已配置的Java编译器或任何启动配置中)。

答案 1 :(得分:2)

可能是因为IntelliJIDEA正在添加其中一个slf4j绑定JAR本身。我猜你正在进行单元测试。因此,有一种方法可以看出你是否可以在单元测试运行器的启动器配置中排除其他JAR。

但是在一天结束时,这个警告是无害的,你可以简单地忽略它。

答案 2 :(得分:1)

在我的特定情况下,我在IntelliJ IDEA中收到此错误,刷新Gradle修复了此错误:

enter image description here

您可以从View..Tool Windows..Gradle找到此窗口。

我们的设置是:

  • IntelliJ IDEA v15
  • 摇篮
  • 詹金斯
  • SVN

答案 3 :(得分:0)

在项目的POM文件中,通过将对项目的直接依赖关系添加到您的项目中,在找到的deps列表中将所需的日志记录后端设置为默认值,

<groupid>ch.qos.logback</groupid>
<artifactid>logback-classic</artifactid>
<scope>runtime</scope>
</dependency>```