SLF4J:无法加载类“org.slf4j.impl.StaticLoggerBinder”。 错误
- 关于Eclipse IDE ( Indigo , Juno和Kepler (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的许多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 Classic , Junobuild模工具 , Kepler标准 , Keplerbuild模工具以及同样的错误。
这个错误出现在清理 , 安装 , testing , 部署 , 生成源代码 , validation , 编译 , 打包 , 集成testing , validation以及目标清理和其他目标的组合。 它也出现在参数-e和-X中 。 曾试图删除m2e存储库并从头开始下载,但又一次没有成功。 我应该提到,它是在3个不同的机器和虚拟的盒子上面的所有系统进行testing,但它产生了相同的错误。
尝试了解决slf4j-api和logback-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-0009或1.2.0.20120903-1050或1.3.0.20130129-0926或1.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议你看看这个链接
一直在看这个问题已经浮出水面。 相信这将是一个很好的阅读其他谁来在这里同样的问题:
我在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>