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

  • 关于Eclipse IDEIndigoJunoKepler (32位和64位版本))
  • 平台WindowsUbuntuMac
  • 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的许多configuration都经过了testing,但是没有一个可以工作。

即使没有声明slf4j依赖关系,该错误也会出现在任何Maven项目中。

  • 新的Maven项目 – > maven-archetype-quickstart

  • 新的Maven项目 – >没有原型select的简单项目

    导致

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

testing环境和configuration

在Mac上使用Eclipse Indigo和Eclipse Juno(32位和64位),在Ubuntu上使用32位,在Windows上使用64位和32位。 经过全面testing的Juno ClassicJunobuild模工具Kepler标准Keplerbuild模工具以及同样的错误。

这个错误出现在清理安装testing部署生成源代码validation编译打包集成testingvalidation以及目标清理和其他目标的组合。 它也出现在参数-e-X中 。 曾试图删除m2e存储库并从头开始下载,但又一次没有成功。 我应该提到,它是在3个不同的机器和虚拟的盒子上面的所有系统进行testing,但它产生了相同的错误。

尝试了解决slf4j-apilogback-core依赖性的所有不同的logbackconfiguration(从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 – 简单的configuration。

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

尝试了所有不同的(从1.6.1到1.7.5) log4j-over-slf4jconfiguration。

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

尝试了所有不同的(从1.6.1到1.7.5) slf4j-jdk14configuration。

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

尝试了所有不同的(从1.6.1到1.7.5) slf4j-log4j12configuration。

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

试过slf4j-nop 1.7.5configuration。

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

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


重现错误的方法

  • 下载Eclipse Juno,Indigo或Kepler 32或64位(所有安装都会导致相同的错误)。

    • 安装m2e – Eclipse的Maven集成

      • Juno – http://download.eclipse.org/releases/juno
      • 开普勒 – http://download.eclipse.org/releases/kepler
      • 靛蓝 – http://download.eclipse.org/technology/m2e/releases/ ( 目前不可用

      要么

    • 将您的m2e版本更新到1.1.0.20120530-00091.2.0.20120903-10501.3.0.20130129-09261.4.0.20130601-0317


    • selectFile-> New-> Other-> Maven Project->点击Next-> Select
      maven-archetype-quickstart从目录 – >完成

      要么

    • selectFile-> New-> Other-> Maven Project->点击Next-> Select创build一个简单的项目(跳过原型select) – > Complete Artifact info-> Finish

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

控制台上的第一行是

 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. 

PS现有项目在将m2e版本更新到1.1.0.20120530-0009,1.2.0.20120903-1050,1.3.0.20130129-0926,1.4.0.20130601-0317后会产生相同的错误


更新

编辑

m2e支持网站:

  • 上面的问题是作为一个错误张贴在m2e支持网站上,伊戈尔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*** 
  • 上述错误报告为m2e版本1.5.0 / Luna M3目标里程碑 )。 该版本尚未下载。
  • Luna M3 预定11月15日 。
  • 最新的开发版本可在这里
  • 有关m2e里程碑的更多信息,请参阅m2e主库 。

我也可以确认这个错误。

解决方法:在m2eclipse中使用外部maven ,而不是embedded的maven。

这是通过三个步骤完成的

1 在本地机器上安装maven (testing机器是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 
  [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Building Simple [INFO] task-segment: [test] [INFO] ------------------------------------------------------------------------ [...] [INFO] Surefire report directory: [...]/workspace/Simple/target/surefire-reports ------------------------------------------------------- TESTS ------------------------------------------------------- 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] ------------------------------------------------------------------------ [...] 

m2eclipse中的3: 从embedded式maven切换到本地maven

  • find当地的maven home安装目录(谷歌为您的MAVEN_HOME ,对我来说这帮助了我是/usr/share/maven2
  • 在eclipse Menu-> Window-> Preferences-> Maven-> Installation->input那个string。 那么你应该切换到你的新的外部maven。
  • 然后像“maven test”那样运行你的项目。

错误消息应该消失。

SLf4J站点有一个文档来解决这个问题。 我跟着它,并添加slf4j-simple-1.6.1.jar与我已经有的slf4j-api-1.6.1.jar我的应用程序。这解决了我的问题

SLF4J

如果你正在使用Gradle添加这个:

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

有与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' 

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

你还没有指定在你的Maven的依赖文件的版本可能是多数民众赞成为什么不select最新的jar子
以及你需要与slf4j-log4j12神器id的另一个deppendency。
把它包含在你的pom文件中

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

让我知道如果错误仍然没有解决
我也build议你看看这个链接

一直在看这个问题已经浮出水面。 相信这将是一个很好的阅读其他谁来在这里同样的问题:

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

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

 <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"/> 

想法是遵循这个解决scheme。 但是如何实施依赖于个案。 固定方法之一就是我上面使用的方法。

希望这可以帮助。

将此代码粘贴到您的pom.xml文件中。 它适用于我。

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