SLF4J:无法加载类"org.slf4j.impl.StaticLoggerBinder".错误

Kon*_*tis 109 eclipse logback slf4j m2eclipse maven

  • 关于Eclipse IDE(Indigo,JunoKepler(32位和64位版本))
  • 平台:Windows,Ubuntu,Mac
  • M2E版本:1.1.0.20120530-0009,1.2.0.20120903-1050,1.3.0.20130129-0926,
    1.4.0.20130601-0317

基本信息

将m2e更新为1.1版后出现上述错误.通过删除m2e 1.1并回滚到m2e 1.0一切正常.我试图在Windows和Ubuntu中重复这个问题,它给了我完全相同的错误.测试了slf4j-api和logback的许多配置,但似乎都没有.

即使没有声明slf4j依赖项,错误也会出现在任何maven项目中.

  • New Maven项目 - > maven-archetype-quickstart

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

    结果

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
Run Code Online (Sandbox Code Playgroud)

测试环境和配置

在Mac上使用Eclipse Indigo和Eclipse Juno(32位和64位)测试,在Ubuntu上测试32位,在Windows上测试64位和32位测试.测试了Juno Classic,Juno Modeling工具,Kepler Standard,Kepler Modeling Tools的全新安装并产生了同样的错误.

出现错误,包括清理,安装,测试,部署,生成源,验证,编译,打包,集成测试,验证以及目标清理与其余目标的组合.它似乎也带有参数-e-X.尝试删除m2e存储库并从头开始下载但是再次没有成功.我应该提到它在3个不同的机器和虚拟盒中测试了所有上述系统,但它产生了相同的错误.

尝试解决slf4j-apilogback-core依赖关系的所有不同的logback配置(从1.0.4到1.0.13),但都产生相同的错误:

<dependency>
   <groupId>ch.qos.logback</groupId>
   <artifactId>logback-classic</artifactId>
   <version></version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

尝试了所有不同的(从1.6.1到1.7.5)slf4j简单配置.

<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-simple</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

尝试了所有不同的(从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>
Run Code Online (Sandbox Code Playgroud)

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

<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-jdk14</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

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

<dependency>
     <groupId>org.slf4j</groupId>
     <artifactId>slf4j-log4j12</artifactId>
     <version></version>
     <scope>compile</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

试过slf4j-nop 1.7.5配置.

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-nop</artifactId>
  <version>1.7.5</version>
  <scope>compile</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

最后但并非最不重要的是,尽管出现错误,仍会保存和打印日志


重现错误的方法

  • 下载Eclipse Juno,Indigo或Kepler 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.
Run Code Online (Sandbox Code Playgroud)

更新M2E版本1.1.0.20120530-0009后PS现有项目将产生同样的错误, 1.2.0.20120903-1050, 1.3.0.20130129-0926, 1.4.0.20130601-0317


更新

编辑

m2e支持网站:

  • 以上问题是在m2e支持网站上发布的一个错误,而Igor Fedorenko的回答是这样的

    没有立即禁止此消息的计划.

    要查看上述错误,请参阅m2e官方支持网站


编辑2

  • 上述误差指示是M2E版本1.2.0.20120903-1050


编辑3

  • 上述误差指示是M2E版本1.3.0.20130129-0926


编辑4

  • 上述误差指示是M2E版本1.4.0.20130601-0317


编辑5

                              ***Reported FIXED***
Run Code Online (Sandbox Code Playgroud)

tve*_*lke 73

我也可以确认这个错误.

解决方法:在m2eclipse中使用外部maven,而不是它的嵌入式maven.

分三步完成:

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

mvn --version

Apache Maven 2.2.1(rdebian-4)Java版本:1.6.0_20 Java home:/ usr/lib/jvm/java-6-openjdk/jre默认语言环境:de_DE,平台编码:UTF-8操作系统名称:"linux"版本:"2.6.35-32-generic"arch:"amd64"家族:"unix"

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

> cd path-to-pom.xml
> mvn test
Run Code Online (Sandbox Code Playgroud)
    [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] ------------------------------------------------------------------------
    [...]
Run Code Online (Sandbox Code Playgroud)

在m2eclipse里面3:嵌入式maven切换到本地maven

  • 找出本地Maven上门安装目录是(mvn --version或Google为你MAVEN_HOME,为我帮我就是/usr/share/maven2)
  • 在eclipse菜单 - >窗口 - >首选项 - > Maven->安装 - >输入该字符串.然后你应该切换到你的新外部maven.
  • 然后运行您的项目,例如"maven test".

错误信息应该消失了.

  • 对不起,它有效.请注意,运行配置上有maven运行时(内部/外部)选项.因此,如果您使用已保存的,请务必更新它. (4认同)
  • 嗯我在Windows上并更改为新的外部安装,但错误仍然存​​在!? (3认同)
  • 对我来说,`#mvn --version`很方便显示MAVEN_HOME. (2认同)

Moh*_*tur 25

SLf4J站点中有一个文档可以解决此问题.我跟着它,并将slf4j-simple-1.6.1.jar与我已经拥有的slf4j-api-1.6.1.jar一起添加到我的应用程序中.这解决了我的问题

SLF4J

  • 这工作,在maven中可以添加:<dependency> <groupId> org.slf4j </ groupId> <artifactId> slf4j-simple </ artifactId> <version> 1.XX </ version> </ dependency> //只需替换为你的版本 (4认同)

小智 9

如果您使用的是Gradle,请添加以下内容:

dependencies { 
... 
compile "org.slf4j:slf4j-simple:1.7.9" 
... 
}
Run Code Online (Sandbox Code Playgroud)


tom*_*asb 5

与 Gradle 有类似的错误和相同的结果,并能够通过以下方式解决它:

//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'
Run Code Online (Sandbox Code Playgroud)

Out-commented 行是导致错误输出的行。我相信您可以将其转移到 Maven。


小智 5

将此代码粘贴到您的 pom.xml 文件中。这个对我有用。

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.6.1</version>
    <scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)