SLF4J: 未能加载类“ org.SLF4J.impl.StaticLoggerBinder”. error

  • 关于 Eclipse IDE(靛蓝朱诺开普勒(32和64位版本))
  • Platforms: 窗户, Ubuntu, Mac
  • M2e 版本 :
    1.4.0.20130601-0317

一般信息

上面的错误是在将 m2e 更新到1.1版之后出现的。我试图在 Windows 和 Ubuntu 中重复这个问题,它给了我完全相同的错误。许多配置的 slf4j-api 和 logback 进行了测试,但似乎没有一个工作。

错误出现在任何 maven 项目 即使没有声明 slf4j 依赖关系中。

  • New Maven Project —— > Maven-archetype-Quick start

  • New Maven Project —— > 没有原型选择的简单项目

    结果

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

测试环境和配置

在 Mac 上测试了 Eclipse 靛蓝和 Eclipse Juno (都是32位和64位) ,在 Ubuntu 上测试了32位,在 Windows 上测试了64位和32位。测试新安装的 朱诺经典朱诺模型工具开普勒标准开普勒建模工具和产生相同的错误。

这个错误出现在 干净安装测试deploy产生源确认编译包裹整合测试verify和其他目标的组合中。它还带有参数 安装0和 安装1。有人试图删除 m2e 存储库并从头开始下载它,但同样没有成功。它应该我提到,它是在3个不同的机器和虚拟盒测试所有上述系统,但它产生了相同的错误。

尝试了解决 Slf4j-apiLogback-core依赖性的所有不同的 后退配置(从1.0.4到1.0.13) ,但都产生了相同的错误:

<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version></version>
</dependency>

尝试了所有不同的(从1.6.1到1.7.5) Slf4j-简单配置。

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version></version>
<scope>compile</scope>
</dependency>

尝试了所有不同的(从1.6.1到1.7.5) Log4j-over-slf4j配置。

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version></version>
<scope>compile</scope>
</dependency>

尝试了所有不同的(从1.6.1到1.7.5) Slf4j-jdk14配置。

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

尝试了所有不同的(从1.6.1到1.7.5) Slf4j-log4j12配置。

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version></version>
<scope>compile</scope>
</dependency>

尝试 slf4j-nop 1.7.5配置。

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>1.7.5</version>
<scope>compile</scope>
</dependency>

最后但并非最不重要的日志保存和打印,尽管有错误。


重现错误的方法

  • 下载 Eclipse Juno,靛蓝或开普勒32或64位(所有安装将 导致同样的错误)。

  • 右键单击项目-> 运行时-> 干净安装(或上面提到的任何其他目标)

控制台上的第一行是

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

P.S. 在将 m2e 版本更新为1.1.0.20120530-0009 1.2.0.20120903-10501.3.0.20130129-0926,< strong > 1.4.0.20130601-0317之后,现有项目将产生相同的错误


最新情况

EDIT

M2e 支持站点:

  • 上面的问题作为一个 bug 发布在 m2e 支持站点上,Igor Fedorenko 的回答是

    目前还没有压制这一消息的计划。

    要查看上面的 bug,请参考 < a href = “ https://bugs.eclipse.org/bug/show _ bug.cgi? id = 387064”rel = “ noReferrer”> m2e 官方支持站点


EDIT 2

  • The above error indication is 现在 also to M2E version 1.2.0.20120903-1050


EDIT 3

  • 上面的错误指示是 现在也到 M2E版本 1.3.0.20130129-0926


编辑4

  • 上面的错误指示是 现在也到 M2E版本 < em > 1.4.0.20130601-0317


编辑5

                              ***Reported FIXED***
  • The above error is reported as fixed for M2E version < em > 1.5.0/Luna M3 (目标里程碑). The version is not yet available for download.
  • Luna M3 is 定于11月15日.
  • 最新的开发版本是 给你
  • 关于 m2e 里程碑的更多信息,您可以在 m2e main repository上找到。
179088 次浏览

您没有在 maven 依赖项文件中指定版本,这可能就是为什么它没有选择最新的 jar < br/> 以及您需要另一个具有 slf4j-log4j12工件 id 的依赖项的原因。< br/> 在你的 pom 文件中包含这个

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.6</version>
</dependency>

如果仍然没有解决错误,请告诉我
我还建议您查看 < a href = “ http://www.slf4j.org/codes.html”rel = “ nofollow”> 这个链接

I can also confirm this error.

解决方案: 是在 m2eclipse 中使用 外部专家,而不是嵌入的 maven。

这是在 三步:中完成的

1 在本地机器上安装 maven(测试机是 Ubuntu 10.10)

Mvn 版本

ApacheMaven 2.2.1(rdebian-4) Java 版本: 1.6.0 _ 20 Java home: /usr/lib/jvm/java-6-openjdk/jre 默认语言环境: de _ DE,Platform 编码: UTF-8 OS name: “ linux”version: “2.6.35-32-general”arch: “ amd64”家庭: “ unix”

2在 链接如何从控制台运行 maven外部运行 maven

> cd path-to-pom.xml
> mvn test
    [INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Simple
[INFO]    task-segment: [test]
[INFO] ------------------------------------------------------------------------
[...]
[INFO] Surefire report directory: [...]/workspace/Simple/target/surefire-reports
    

-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running net.tverrbjelke.experiment.MainAppTest
Hello World
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.042 sec
    

Results :
    

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
    

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[...]

3 inside m2 eclipse: 为什么从命令行开始工作,而不是从 m2eclipserel 开始3内部 m2日食: 为什么从命令行开始工作,而不是从 m2eclipserel 开始

  • find out where local maven home installation dir is (mvn --version, or google for your MAVEN_HOME, for me 这对我有帮助 that is /usr/share/maven2 )
  • 在 eclipseMenu-> Window-> Preferences-> Maven-> Installation- > 输入该字符串,然后您应该已经切换到新的外部 Maven。
  • 然后运行你的项目,例如“ maven 测试”。

错误消息应该消失了。

SLf4J 站点中有一个文档可以解决这个问题。接下来,我将 slf4j-simple-1.6.1.jar 和我已经有的 slf4j-api-1.6.1.jar 一起添加到我的应用程序中。这解决了我的问题

Slf4j

一直在忽视已经浮出水面的问题。相信对于那些带着同样的问题来到这里的人来说,这将是一本很好的读物:

Https://bugs.eclipse.org/bugs/show_bug.cgi?id=387064

有类似的错误,同样的结果与格拉德尔,并能够解决以下问题:

//compile 'org.slf4j:slf4j-api:1.7.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.1'

注释掉的行是导致错误输出的那一行。我相信你可以把这个转移到 Maven。

对于运行在 Eclipse Luna 上的 Spring Boot-Gradle 应用程序,我遇到了类似的问题。 我可以通过在项目的.classspath 中手动添加一个条目来解决这个问题

<classpathentry sourcepath="C:/Users/<username>/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-simple/1.7.7/3150039466ad03e6ef1c7ec1c2cbb0d96710cf64/slf4j-simple-1.7.7-sources.jar" kind="lib" path="C:/Users/<username>/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-simple/1.7.7/8095d0b9f7e0a9cd79a663c740e0f8fb31d0e2c8/slf4j-simple-1.7.7.jar"/>

想法是遵循 this解决方案。但如何实施取决于具体情况。一种修复的方法是我上面使用的方法。

Hope this helps.

如果你正在使用 Gradle,请添加以下内容:

dependencies {
...
compile "org.slf4j:slf4j-simple:1.7.9"
...
}

将这段代码粘贴到 pom.xml 文件中。

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.6.1</version>
<scope>test</scope>
</dependency>

这不是一个错误消息,而是一个警告。 他们的网站非常清楚地解释说:

当在类路径上找不到 SLF4J 提供程序时,将报告此警告(即不是错误)消息。将 slf4j-nop.jar slf4j-simple.jar、 slf4j-log4j12.jar、 slf4j-jdk14.jar 或 logback-classic.jar 中的一个(也只有一个)放在类路径上应该可以解决这个问题。注意,这些提供程序必须以 slf4j-api 1.8或更高版本为目标。

在没有提供程序的情况下,SLF4J 将默认为无操作(NOP)日志记录程序提供程序。

Https://www.slf4j.org/codes.html#staticloggerbinder

我在使用 Java 编写卡夫卡制作人程序时遇到了同样的问题。这个错误是由于错误的 slf4j 库造成的。使用下面的 slf4j-简单的 maven 依赖,将修复您的问题。

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.6.1</version>
<scope>test</scope>
</dependency>

我也有同样的问题,我用这种方法解决了。 将此依赖项添加到 maven“ pom.xml”并重新加载 maven. ,然后尝试运行代码。
` Org.slf4j Slf4j-nop 2.0.0-alpha5 测试

    <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.0-alpha5</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.0.0-alpha5</version>
</dependency>`
    <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>2.0.0-alpha5</version>
<scope>test</scope>
</dependency>


<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.0-alpha5</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.0.0-alpha5</version>
</dependency>