22

Mypom.xml仅包含一个对 SLF4J 的引用:

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-jdk14</artifactId>
        <version>1.5.10</version>
    </dependency>

我收到此错误:

SLF4J:无法加载类“org.slf4j.impl.StaticLoggerBinder”。

SLF4J:默认为无操作(NOP)记录器实现 SLF4J:

有关详细信息,请参阅http://www.slf4j.org/codes.html#StaticLoggerBinder

我检查了那个 URL,它确实提供了一个解决方案:“将 slf4j-nop.jar、slf4j-simple.jar、slf4j-log4j12.jar、slf4j-jdk14.jar 或 logback-classic.jar 中的一个(也是唯一一个)放在类路径应该可以解决问题。”

我的问题是:哪个类路径?

  • 系统的%CLASSPATH% ? (我没有!我需要专门为此创建它)
  • Eclipse 的项目.classpath?(我想我试过了,但没有帮助)
  • 其他?

我在 SO 上找到了很多关于这个主题帖子,但它们都引用了相同的答案:“place ... on the class path

哪个类路径?

4

2 回答 2

23

首先,为了添加 SLF4J,您应该在 pom.xml 中放置一个且只有一个这些依赖项。这取决于您选择使用什么实现。您在 pom.xml 中添加的每个依赖项都会自动添加到类路径中。只要你用的是Eclipse就不需要修改系统的%CLASSPATH%?

<dependency>
   <groupId>ch.qos.logback</groupId>
   <artifactId>logback-classic</artifactId>
   <version></version>
</dependency>
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-simple</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-log4j12</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-jdk14</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>

最后但同样重要的是,您将遇到错误 SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder"。

Eclipse Juno 和 Indigo 在使用捆绑的 maven 版本 (m2e) 时不会抑制消息 SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder"。此行为从 m2e 版本 1.1.0.20120530-0009 及更高版本开始存在。

虽然,这被指示为错误,您的日志将正常保存。在修复此错误之前,突出显示的错误仍将存在。在m2e 支持站点中了解更多信息。

为了抑制此消息,当前可用的解决方案是使用外部 maven 版本而不是 Eclipse 的捆绑版本。您可以在下面的问题中找到有关此解决方案和有关此错误的更多详细信息。

SLF4J:无法加载类“org.slf4j.impl.StaticLoggerBinder”。错误

于 2012-12-12T13:55:32.553 回答
0

问题:

Maven用来管理我的依赖项。就我而言,我收到此错误的原因是因为我的系统中有多个slf4j-simplejar在我的类路径上。SLF4J 文档指出:

将slf4j-nop.jar slf4j-simple.jar、slf4j-log4j12.jar、slf4j-jdk14.jar 或 logback-classic.jar 中的一个(也是唯一一个)放在类路径上应该可以解决问题。

解决方案:

  • 在文件系统中搜索以下 jars 并删除除 in 之外的所有副本.m3
    1. slf4j-nop
    2. slf4j-简单
    3. slf4j-log4j12
    4. slf4j-jdk14
    5. logback-经典
于 2019-07-26T19:41:39.623 回答