2

我对 SLF4J 有一个奇怪的双重错误。

我试图让 SLF4J 绑定到 Log4J。

在 Eclipse 中,当我运行 Maven Clean 和 Maven Install 时,我在 Maven Install 输出中得到了这个:

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.

稍后,在为项目运行 jUnit 测试时,其中一个测试调用了一个记录消息的方法(我还没有清理它以不记录)。
但我没有记录,而是收到以下消息:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/JDunn/.m2/repository/ch/qos/logback/logback-classic/0.9.30/logback-classic-0.9.30.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/JDunn/.m2/repository/org/slf4j/slf4j-log4j13/1.0.1/slf4j-log4j13-1.0.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

所以看来SLF4J先是加载不了一个Binder,然后才找到多个Bindings!

在我的 pom.xml 中,我只有一个相关的依赖项:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j13</artifactId>
    <version>1.0.1</version>
</dependency>

为了解决这个问题,我尝试从我的存储库中删除第一个绑定,即这个:

C:/Users/JDunn/.m2/repository/ch/qos/logback/logback-classic/0.9.30/logback-classic-0.9.30.jar

我运行了另一个 Maven Clean,Maven Install 并在尝试运行测试时遇到了一个奇怪的错误:

Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.14:test (default-test) on project sonar-score-plugin: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.14:test failed: There was an error in the forked process

然后我又运行了 Maven Clean,Maven Install,又得到了原来的“Multiple Bindings”错误,发现我删除的目录又出现了,就好像我没有删除一样。

我不知道我还能做些什么来摆脱“多重绑定”错误。

注意:我发现了一个类似的问题,但我没有可能导致此错误的相同原因。

此外,顶部的“No Binder Found”错误可能是因为这个,尽管我不确定。

4

2 回答 2

1

It turns out that another dependency (We'll call it Dependency A) in my project has, among its own dependencies, a dependency on ch.qos.logback:logback-classic. Adding exclusions for this dependency to Dependency A resulted in errors, so I decided to ditch trying to bind to log4j and just let it bind to logback-classic.

I removed the dependency:

slf4j-log4j13

I then replaced it with:

slf4j-api

This removed the multiple-bindings error.

I'm assuming the top error message of no bindings is due to the fact that it is given before the dependencies of dependencies are downloaded. So I'm going to ignore it as my code works just fine.

于 2013-09-18T19:05:34.623 回答
0

在我看来,您的测试依赖项中有多个绑定(显式或隐式作为依赖项的依赖项)。

您的“正常”(非测试)依赖项没有相同的问题 - 实际上不包含单个 SFL4j 绑定。

请注意,不是 Maven 或 Eclipse 的用户,我不知道如何解决这个问题。我只是指出问题的根源,希望a)我是对的,b)这足以让你解决剩下的问题。

于 2013-09-18T16:36:58.970 回答