4

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

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

4 回答 4

4

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

在此处输入图像描述

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

我们的设置是:

  • IntelliJ IDEA v15
  • 摇篮
  • 詹金斯
  • SVN
于 2017-01-20T10:30:54.260 回答
3

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

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

于 2014-08-05T17:44:06.387 回答
2

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

但归根结底,这个警告是无害的,你可以简单地忽略它。

于 2013-02-12T16:53:56.820 回答
0

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

<groupid>ch.qos.logback</groupid>
<artifactid>logback-classic</artifactid>
<scope>runtime</scope>
</dependency>```
于 2020-01-27T16:57:43.737 回答