首页 文章

多个SLF4J绑定会导致错误?

提问于
浏览
11

我的依赖树和多个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-proxy 2.0-beta-8

<!-- LOGGING DEPENDENCIES - LOG4J -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
    </dependency>

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

有人可以告诉我如何解决这个问题吗?

5 回答

  • 2

    有几种解决方案:

    • 如果您在类路径中有多个不同版本,请确保 include only one slf4j jar (可能使用更高版本) .

    • 有时可能无法排除多个slf4j jar ,因为它们可能被内部的其他 jar 使用,这些 jar 在您的类路径上 . 这些依赖jar可能会引用slf4j jar的不同版本,这会导致应用程序失败 . 在这种情况下, make sure that you have the jar with higher version of SLF4j added before other jar using SLF4J jars . 这将确保您的java程序将获取最新版本的SLF4J,这显然是向后兼容的 .

  • 23

    如果你的项目依赖于其他项目而另一个使用slf4j以及不同的版本尝试使用 excusion

    <exclusions>
       <exclusion>
           <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </exclusion>
    </exclusions>
    
  • 1

    我建议在maven中使用以下依赖,

    <dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
    </dependency>
    

    这解决了我的问题,虽然我有更多依赖使用slf4j .

  • 0

    当有多个jar时会发生这种情况 . 要检查jar是否已经可用,请转到项目 - > java resources - > maven dependencies并检查jar是否已经可用 . 如果它可用,你仍然得到错误 . 然后在.m2 \ resources文件夹中找到该jar文件的位置,并删除与该jar文件相关的完整文件夹,然后下载更新的版本并将其导入到您的项目中 . :)

    有时我甚至出错了,即使我在pom.xml文件中下载了正确版本的正确jar文件 . 然后我需要从我的pom.xml中删除它并从谷歌下载该jar并将其导入我的项目 . 确保如果你这样做然后不要忘记去项目属性 - >部署组件选项卡 - >单击添加 - > Java构建路径条目并单击该jar文件,然后单击“应用” .

  • 0

    如果类路径上有多个绑定,请选择一个且只能使用一个绑定,并删除其他绑定 .

    尝试删除'org.slf4j'或'log4j2'的显式添加依赖项 .

相关问题