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

use*_*838 5 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.
Run Code Online (Sandbox Code Playgroud)

这里有两个可能的问题解决方案[1] [2]

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

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

Con*_*ngo 5

在我的特殊情况下,我在 中遇到了这个错误IntelliJ IDEA,刷新 Gradle 修复了这个错误:

在此输入图像描述

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

我们的设置是:

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


小智 3

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

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