繁体   English   中英

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

[英]How to get rid of the “Class path contains multiple SLF4J bindings” warning?

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

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 运行应用程序时。

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

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

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

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

在此处输入图片说明

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

我们的设置是:

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

这可能是因为 IntelliJIDEA 正在添加那些 slf4j 绑定 JAR 本身之一。 我的猜测是在您运行单元测试时发生。 因此,一种方法是查看是否可以在单元测试运行器的启动器配置中排除其他 JAR。

但归根结底,此警告是无害的,您可以直接忽略它。

在项目的 POM 文件中,通过向项目添加对其的直接依赖,将所需的日志后端设置为默认值,例如:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM