我的依赖树和多个SLF4J绑定存在问题。到目前为止我发现的是,通常这只会引起警告但在我的情况下它似乎阻止我的程序运行: 这些是我得到的例外:
SLF4J:类路径包含多个SLF4J绑定。 SLF4J:在[jar:file:/ C:/Users/FischerNi/.m2/repository/org/slf4j/slf4j-jdk14/1.5.3/slf4j-jdk14-1.5.3.jar!/ org / slf4j /中找到绑定IMPL / StaticLoggerBinder.class] SLF4J:在[jar:file:/ C:/Users/FischerNi/.m2/repository/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar!/ org / slf4j /中找到绑定IMPL / StaticLoggerBinder.class] SLF4J:有关解释,请参阅http://www.slf4j.org/codes.html#multiple_bindings。 SLF4J:slf4j-api 1.6.x(或更高版本)与此绑定不兼容。 SLF4J:您的绑定是1.5.5或更早版本。 SLF4J:将绑定升级到1.6.x版。或2.0.x 线程“main”中的异常java.lang.NoSuchMethodError:org.slf4j.impl.StaticLoggerBinder.getSingleton()Lorg / slf4j / impl / StaticLoggerBinder;
这是我的依赖项的相关部分: net.lightbody.bmp browsermob代理 2.0-β-8
<!-- LOGGING DEPENDENCIES - LOG4J -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
有人可以告诉我如何解决这个问题吗?
答案 0 :(得分:25)
有几种解决方案:
答案 1 :(得分:3)
如果您的项目依赖于其他项目而另一个项目使用slf4j以及不同版本,请尝试使用 excusion
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
答案 2 :(得分:3)
法塔赫的回答是正确的,我不得不花一些时间弄清楚如何使用它,这就是为什么我要添加一个完整的解决方案:
运行mvn dependency:tree
找出哪个库正在使用slf4j:
[INFO] +- net.lightbody.bmp:browsermob-proxy:jar:2.0-beta-8:compile
[INFO] | +- org.slf4j:slf4j-jdk14:jar:1.7.25:compile
像这样从行家中排除它:
<dependency>
<groupId>net.lightbody.bmp</groupId>
<artifactId>browsermob-proxy</artifactId>
<version>2.0.0</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
</exclusion>
</exclusions>
</dependency>
答案 3 :(得分:1)
我建议在maven中使用以下依赖项,
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
这解决了我的问题,尽管我使用slf4j有更多的依赖。
答案 4 :(得分:0)
当有多个jar时会发生这种情况。要检查罐子是否已经可用,请转到项目 - &gt; java资源 - &gt; maven依赖项并检查jar是否已经可用。如果它可用,你仍然得到错误。然后在.m2 \ resources文件夹中找到该jar文件的位置,并删除与该jar文件相关的完整文件夹,然后下载更新的版本并将其导入到您的项目中。 :)
有时即使我在pom.xml文件中下载了正确版本的正确jar文件,我也会收到错误。然后我需要从我的pom.xml中删除它并从谷歌下载该jar并将其导入我的项目。确保如果你这样做,那么不要忘记去项目属性 - &gt;部署程序集选项卡 - &gt;单击添加 - &gt; Java Build Path Entries并单击该jar文件并单击apply。
答案 5 :(得分:0)
当类路径上有多个绑定时,选择一个且只能使用一个绑定,并删除其他绑定。
尝试删除明确添加的&#39; org.slf4j&#39;或者&#39; log4j2&#39;。