首页 > 其他分享 >SLF4J: Class path contains multiple SLF4J bindings.错误解决

SLF4J: Class path contains multiple SLF4J bindings.错误解决

时间:2023-05-11 14:13:02浏览次数:53  
标签:multiple contains jar slf4j SLF4J org log4j impl

1.出现问题

错误如下:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/D:/Users/FFprincess/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/D:/Users/FFprincess/.m2/repository/org/slf4j/slf4j-log4j12/1.7.25/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]

说明这是maven问题,两者冲突。

错误如下:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/hbase/lib/slf4j-log4j12-1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

说明这是jar包冲突,分别为:

file:/usr/hbase/lib/slf4j-log4j12-1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class
/usr/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class

2. 错误原因

出现这种问题的根本原因是项目中确实存在了多个slf4j的绑定。这是毋庸置疑的。
但问题是,在我们项目中的几个模块里的pom文件都没有声明引用log4j,只声明了logback的引用,为什么slf4j还会找到两个绑定?
答案肯定是:既然你没有显式引用,那肯定是在哪个地方偷偷地引用了啊。你通过maven坐标引用的jar包里,肯定有冲突的jar包。

如下图所示。在我们的这个项目中,在core模块添加如下坐标。

<dependencies>
    <dependency>
        <groupId>com.github.wenweihu86.raft</groupId>
        <artifactId>raft-java-core</artifactId>
        <version>1.8.0</version>
    </dependency>
</dependencies>

这个坐标。它里面就含有了log4j的jar包,因为这个项目打包发布的时候,把slf4j的具体绑定一同打包了。

3.解决办法:

在上面的坐标里加上 <exclusions> 标签。该标签顾名思义就是排除一些东西。

<!--exclude log4j in raft-brpc-core-->
<exclusions>
     <exclusion>
         <groupId>org.apache.logging.log4j</groupId>
         <artifactId>log4j-slf4j-impl</artifactId>
     </exclusion>
     <exclusion>
         <groupId>org.apache.logging.log4j</groupId>
         <artifactId>log4j-core</artifactId>
     </exclusion>
 </exclusions>

 由上图可以看出,将需要排除的jar包的maven坐标放进去之后,maven会自动将这些jar包从当前项目移除。

 启动项目,控制台打印前后对比图:

前:

 后:

 

知识点延伸:

slf4j是日志门面,外观,抽象,接口。log4j,logback是具体实现。

 

 参考:

https://blog.csdn.net/weixin_42181264/article/details/112168270

https://blog.csdn.net/sinat_32336967/article/details/98531470

https://blog.csdn.net/sunzixiao/article/details/126256484



标签:multiple,contains,jar,slf4j,SLF4J,org,log4j,impl
From: https://www.cnblogs.com/super-chao/p/17390854.html

相关文章

  • System.InvalidOperationException:“The entity type 'XXXXX' has multiple properti
    一、前言当我使用efcorecodefirst成功生成实体类,然后编写好功能,运行的时候报了这个错误System.InvalidOperationException:“Theentitytype'Student'hasmultiplepropertieswiththe[Key]attribute.Compositeprimarykeyscanonlybesetusing'HasKey'in'OnMo......
  • string replace multiple items
    Doastr.replace(';',',')andthenastr.split(',')orimportrere.split(';|,',string_to_split)>>>a='Beautiful,is;better*than\nugly'>>>importre>>>re.split(......
  • How to connect to multiple SSD1306 OLED Displays using Raspberry Pi GPIO I2C PIN
    HowtoconnecttomultipleSSD1306OLEDDisplaysusingRaspberryPiGPIOI2CPINAllInOne如何使用RaspberryPi的GPIOI2CPIN连接多个SSD1306OLED显示器demos(......
  • slf4j
    日志门面Slf4j转载自:https://zhuanlan.zhihu.com/p/394685808Java日志的恩怨情仇1996年早期,欧洲安全电子市场项目组决定编写它自己的程序跟踪API(TracingAPI)。经过不断的完善,这个API终于成为一个十分受欢迎的Java日志软件包,即Log4j(由Ceki创建)。后来Log4j成为Apache基金会......
  • Representation Learning for Attributed Multiplex Heterogeneous Network
    目录概符号说明各种定义HeterogeneousnetworkAttributednetworkAttributedmultiplexnetwork代码CenY.,ZouX.,ZhangJ.,YangH.,ZhouJ.andTangJ.Representationlearningforattributedmultiplexheterogeneousnetwork.KDD,2019.概本文在Attributed(结......
  • Correct the classpath of your application so that it contains a single, compatib
    1.背景有时候引入包有冲突,比如在Maven项目中的不同模块多次重复引入等这里遇到的问题是重复映入了如下包:<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.0-RELEASE</vers......
  • DIA-48448: This command does not support multiple ADR homes
    在使用adrci命令清空日志时遇到错误:“DIA-48448:ThiscommanddoesnotsupportmultipleADRhomes”如何解决呢?如下所示$ adrciADRCI: Release 19.0.0.0.0 - Production on Mon Apr 24 17:13:32 2023Copyright (c) 1982, 2019, Oracle and/or its affiliate......
  • Validating multiple properties with FluentValidation(FluentValidator多个相关属性
    Sourcelink:ValidatingmultiplepropertieswithFluentValidation|TheCodetripper(wordpress.com)publicclassFooBarRequestValidator:AbstractValidator<FooBarRequest>{privatereadonlyIRepositoryrepository;publicFooBarRequestValid......
  • web前端pdf.js预览pdf实例创建报错:Array. prototype` contains unexpected enumerable
    使用pdf.min.js是预览pdf文件,但是在实例化时异常报错,下面是实例化的代码varloadingTask=window.pdfjsLib.getDocument(url);console.log(loadingTask);this.pageNum=1;this.pageRendering=false;this.pageNumPending=null;loadingTask.promise.then((pdfDoc_)=>......
  • idea本地编译报错 程序包org.slf4j不存在
    idea本地编译报错程序包org.slf4j不存在 问题描述:从若依官网下载的项目,修改了自己的数据库连接,运行一直报错,如下(怀疑是j依赖包不全导致,期间我清空了本地mavne库重新下载依然不行):  解决办法:  参考如下:主要原因可能有两种情况:1.还是jar包下载失败,或者没有自动......