121
  • 关于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 的许多配置进行了测试,但似乎没有一个有效。

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

  • 新建 Maven 项目--> maven-archetype-quickstart

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

    结果到

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

测试环境和配置

在 Mac 上使用 Eclipse Indigo 和 Eclipse Juno(32 位和 64 位)进行测试,在 Ubuntu 上使用 32 位,在 Windows 上使用 64 和 32 位进行测试。测试了Juno ClassicJuno Modeling toolsKepler StandardKepler Modeling Tools的全新安装并产生了相同的错误。

错误出现在cleaninstalltestdeploygenerate-sourcesvalidatecompilepackageintegration-testverify以及目标 clean 与其余目标的组合中。它也与参数-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>

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

<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、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.

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


更新

编辑

m2e 支持网站:

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

    没有立即计划压制此消息。

    查看以上bug请参考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 ( Target Milestone ),上述错误报告为已修复。该版本尚未可供下载。
  • Luna M3于 11 月 15 日
  • 最新的开发版本可在此处获得
  • 您可以在m2e 主存储库中找到有关 m2e 里程碑的更多信息。
4

12 回答 12

75

我也可以确认这个错误。

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

这分三个步骤完成:

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

mvn --版本

Apache Maven 2.2.1 (rdebian-4) Java 版本:1.6.0_20 Java 主页:/usr/lib/jvm/java-6-openjdk/jre 默认语言环境:de_DE,平台编码:UTF-8 操作系统名称:“linux”版本:“2.6.35-32-generic”拱:“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 m2eclipse内部:嵌入式maven切换到本地maven

  • 找出本地 maven 家庭安装目录在哪里(mvn --version或者你的谷歌MAVEN_HOME,对我来说这对我有帮助/usr/share/maven2
  • 在eclipse菜单->窗口->首选项->Maven->安装->输入该字符串。然后你应该切换到你的新外部 Maven。
  • 然后运行您的项目,例如“maven 测试”。

错误消息应该消失了。

于 2012-09-11T15:41:02.563 回答
26

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

slf4j

于 2014-05-23T10:06:03.557 回答
19

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

dependencies { 
... 
compile "org.slf4j:slf4j-simple:1.7.9" 
... 
}
于 2016-12-23T04:56:51.480 回答
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'

注释外的行是导致错误输出的行。我相信您可以将其转移到 Maven。

于 2014-10-29T15:11:11.297 回答
4

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

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.6.1</version>
    <scope>test</scope>
</dependency>
于 2017-09-27T10:00:51.883 回答
3

您没有在 maven 依赖文件中指定版本可能就是为什么它没有选择最新的 jar
以及您需要另一个与slf4j-log4j12工件 id 的依赖关系。
将此包含在您的 pom 文件中

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

如果错误仍未解决
,请告诉我我也建议您查看此链接

于 2012-08-14T11:07:09.037 回答
1

一直在寻找问题已经浮出水面。相信对于遇到同样问题的其他人来说,这将是一本好书:

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

于 2014-07-30T05:33:43.080 回答
0

我在使用 java 编写 Kafka 生产者程序时遇到了同样的问题。此错误是由于错误的 slf4j 库引起的。使用下面的 slf4j-simple maven 依赖项来解决您的问题。

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.6.1</version>
    <scope>test</scope>
</dependency>
于 2019-12-16T05:39:15.380 回答
0

我有同样的问题。我用这种方法解决了。将此依赖项添加到 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>`
于 2021-12-03T08:29:00.393 回答
0

我的 Spring Boot - Gradle 应用程序在 Eclipse Luna 上运行时遇到了类似的问题。我可以通过在项目的 .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"/>

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

希望这可以帮助。

于 2015-08-05T10:44:08.190 回答
0
    <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>
于 2021-12-03T08:32:04.367 回答
-1

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

当在类路径上找不到 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

于 2018-05-16T19:53:29.847 回答