无法加载类“org.slf4j.impl.StaticLoggerBinder” - 哪个类路径?

时间:2012-12-11 21:22:34

标签: slf4j

我的pom.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   的信息。

我检查了这个网址,实际上它提供了一个解决方案:“放置一个(只有一个)slf4j-nop.jar,slf4j-simple.jar,slf4j-log4j12.jar,slf4j-jdk14.jar或类路径上的logback-classic.jar可以解决问题。“

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

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

我在SO a few上找到了相当here个帖子,但他们都引用了相同的答案:“放置在类路径上“

哪个类路径?

2 个答案:

答案 0 :(得分:16)

首先,为了添加SLF4J,您应该在pom.xml中添加 ONE 且仅 ONE 这些依赖项。这取决于您选择使用的实施方式。您在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:无法加载类“org.slf4j.impl.StaticLoggerBinder”。

当使用捆绑的maven版本(m2e)时,Eclipse Juno和Indigo不会抑制消息SLF4J:无法加载类“org.slf4j.impl.StaticLoggerBinder”。此行为存在于m2e版本1.1.0.20120530-0009及之后。

虽然这表示为错误,但您的日志会正常保存。在修复此错误之前,突出显示的错误仍然存​​在。有关详情,请参阅m2e support site

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

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". error

答案 1 :(得分:0)

问题:

我正在使用import { createSelector } from 'reselect'; const _getSelectedStage = (stages, id) => { return stages.find((s) => s.id === id); }; export const selectedStage = createSelector( [getStages, getSelectedStageId], _getSelectedStage ); 来管理我的依赖项。就我而言,出现此错误的原因是,因为我的类路径上的系统中有多个Maven jar SLF4J documentation指出:

  

将slf4j-nop.jar slf4j-simple.jar,slf4j-log4j12.jar,slf4j-jdk14.jar或logback-classic.jar中的一个(仅一个)应该可以解决问题。

解决方案:

  • 在文件系统中搜索以下jar,并除去slf4j-simple中的副本以外的所有副本:
    1. slf4j-nop
    2. slf4j-简单
    3. slf4j-log4j12
    4. slf4j-jdk14
    5. logback-classic