springboot 关于 Class path contains multiple SLF4J bindings.警告的解决

springboot 关于 Class path contains multiple SLF4J bindings.警告的解决springboot 关于 Classpathcon 警告的解决 有一次配置好 springboot 项目启动后 忽然发现有下边的警告 SLF4J Classpathcon SLF4J Foundbinding jar file E mavenJ

springboot 关于 Class path contains multiple SLF4J bindings.警告的解决

  有一次配置好springboot项目启动后,忽然发现有下边的警告:

SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/E:/mavenJarOnline/ch/qos/logback/logback-classic/1.1.9/logback-classic-1.1.9.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/E:/mavenJarOnline/org/slf4j/slf4j-log4j12/1.7.22/slf4j-log4j12-1.7.22.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]
原因分析:

  上边的大概意思是说logback-classic 包和slf4j-log4j12 包,关于org/slf4j/impl/StaticLoggerBinder.class 这个类发生了冲突。
  发生这个错误的原因,首先logback 日志的开发者和log4j 的开发者据说是一波人,而springboot 默认日志是,较新的logback 日志。但是在以前流行的日志却是log4j ,而且很多的第三方工具都含有log4j 得引入。
  而我们在项目开发中,难免会引入各种各样的工具包,所以,基本上springboot 项目,如果不注意,肯定会出现这种冲突的。




问题隐患:

  当然最关心的是它是否有隐患,如果你在开发工具中运行,对,没毛病,一般会正常启动。
  经过我使用情况中的观察,貌似springboot 配置成tomcat运行 ,即修改成war 包之后,一般这个警告没有什么影响;但是如果是传统的jar 包,尽管你在开发工具中能正常运行,也可能在打完包之后不能运行。

问题出现:

  因为我们是分布式项目开发,服务层作为一个jar 运行,而接口调用和前端页面,作为一个war 一起运行,也就是说我们即有war ,又有jar ,项目部署的时候,需要打完包之后运行才可以。
  在打完包之后,war 包能正常运行,jar 包不能正常运行,报了如下错误:

Exception in thread "main" java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner .java:48) at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) at org.springframework.boot.loader.Launcher.launch(Launcher.java:50) at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51) Caused by: java.lang.ExceptionInInitializerError at org.slf4j.impl.StaticLoggerBinder. 
  
    (StaticLoggerBinder 
   .java: 
   72) at org 
   .slf4j 
   .impl 
   .StaticLoggerBinder. 
   
     (StaticLoggerBinder 
    .java: 
    45 ) at org 
    .slf4j 
    .LoggerFactory 
    .bind(LoggerFactory 
    .java: 
    150) at org 
    .slf4j 
    .LoggerFactory 
    .performInitialization(LoggerFactory 
    .java: 
    124) at org 
    .slf4j 
    .LoggerFactory 
    .getILoggerFactory(LoggerFactory 
    .java: 
    412) at org 
    .slf4j 
    .LoggerFactory 
    .getLogger(LoggerFactory 
    .java: 
    357) at org 
    .apache 
    .commons 
    .logging 
    .impl 
    .SLF4JLogFactory 
    .getInstance(SLF4JLogF 
    actory.java: 
    155) at org 
    .apache 
    .commons 
    .logging 
    .impl 
    .SLF4JLogFactory 
    .getInstance(SLF4JLogF 
    actory.java: 
    132) at org 
    .apache 
    .commons 
    .logging 
    .LogFactory 
    .getLog(LogFactory 
    .java: 
    273) at org 
    .springframework 
    .boot 
    .SpringApplication. 
    
      (SpringApplication 
     .java: 
     190) at spingboot 
     .study 
     .SpringbootStudyApplication 
     .main(SpringbootStudyApplic 
     ation.java: 
     14) ... 
     8 more Caused by: java 
     .lang 
     .IllegalStateException: Detected both log4j-over-slf4j 
     .jar A ND bound slf4j-log4j12 
     .jar on the class path, preempting StackOverflowError. See also http://www 
     .slf4j 
     .org/codes 
     .html 
     #log4jDelegationLoop for more details. at org 
     .slf4j 
     .impl 
     .Log4jLoggerFactory. 
     
       (Log4jLoggerFactory 
      .java: 
      54 ) ... 
      19 more 
      
     
    
  

问题解决:

  当然问题我不敢确定一定是因为warjar 的原因,你们也可能不关心这个,我们只想知道如何解决这种问题而已。
  问题解决办法很简单,就是既然抛了jar包冲突 ,那我们就排除一个jar 包即可。关键是排除哪一个jar包 ,这里注意下了,如果你用的是logback 日志,一定要排除slf4j-log4j12 包,不要排除logback-classic 包。
  即找到pom.xml 文件,如果你们的开发工具,比如eclipseidea 都可以看引入jar 包的联系,比如idea可以这样看到你的依赖结构:
这里写图片描述
  点击后,弹出下边的这样的结构:








这里写图片描述
  通过上图中,你可以看到zookeeper 包中默认引入了slf4j-log4j12包,除此之外,还有我们springboot 一定引入的spring-boot-starter-web 包,它里边也有这个slf4j-log4j12 引入。
  我们只要在pom.xml 里排除这个即可。
如下:






<dependency> <groupId>org.springframework.boot 
   groupId> <artifactId>spring-boot-starter-web 
   artifactId>  
    <exclusions> <exclusion> <groupId>org.slf4j 
   groupId> <artifactId>slf4j-log4j12 
   artifactId>  
   exclusion>  
   exclusions>  
   dependency>

  下边是我们项目引入的第三方的工具包中:

 <dependency> <groupId>org.apache.zookeeper 
   groupId> <artifactId>zookeeper 
   artifactId> <version>3.4.8 
   version>  
    <exclusions> <exclusion> <groupId>org.slf4j 
   groupId> <artifactId>slf4j-log4j12 
   artifactId>  
   exclusion>  
   exclusions>  
   dependency>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/205470.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午5:57
下一篇 2026年3月19日 下午5:57


相关推荐

  • 动态规划之01背包问题及其优化(python实现)「建议收藏」

    动态规划之01背包问题及其优化(python实现)「建议收藏」动态规划之01背包问题及其优化(python实现)**背包问题(**Knapsackproblem)是一种组合优化的NP完全问题。问题描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。问题的名称来源于如何选择最合适的物品放置于给定背包中。解决思路:动态规划,对每一件物品遍历背包容量,当背包可容纳值大于等于当前物品,与之前已放…

    2022年7月26日
    7
  • 小龙虾 OpenClaw 安装全攻略:本地部署 AI 智能体一步到位

    小龙虾 OpenClaw 安装全攻略:本地部署 AI 智能体一步到位

    2026年3月12日
    3
  • 关于缺陷报告_登录模块缺陷报告

    关于缺陷报告_登录模块缺陷报告基本原则:尽快报告缺陷、有效描述缺陷、报告缺陷时不做任何评价、确保缺陷可以重现软件缺陷是存在于软件之中的那些不希望或不可能接受的偏差软件测试过程管理的理念:尽早测试、全面测试、全过程测试、独立迭代测试 缺陷报告的写作准则书写清晰、完整的缺陷报告是对保证缺陷正确处理的最佳手段。 它也减少了工程师以及其它质量保证人员的后续工作。为了书写更优良的缺陷报告,需要遵守“5

    2025年12月9日
    7
  • Cheerio爬虫

    Cheerio爬虫Cheerio 是 Node js 特别为服务端定制的 能够快速灵活的对 JQuery 核心进行实现 它工作于 DOM 模型上 且解析 操作 呈送都很高效 适合各种 Web 爬虫程序 数据源爬虫要想爬取数据首先提供爬取数据的路径 url http www hubwiz com course bc20ce26fhtt xc hubwiz com course bc20ce26f 爬虫目标页面每一章节的标题及其中小节的标题名称 小

    2026年3月19日
    2
  • 唤醒词_好听的唤醒词

    唤醒词_好听的唤醒词语音唤醒定义语音唤醒在学术上被称为keywordspotting(简称KWS),给它做了一个定义:在连续语流中实时检测出说话人特定片段。这里要注意,检测的“实时性”是一个关键点,语音唤醒的目的

    2022年8月6日
    5
  • 腾讯混元 API + 沉浸式翻译插件,轻松阅读外文内容

    腾讯混元 API + 沉浸式翻译插件,轻松阅读外文内容

    2026年3月13日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号