关于“LoggerFactory is not a Logback LoggerContext but Logback is on ......“的解决方案

​

✨重磅!盹猫的个人小站正式上线啦~诚邀各位技术大佬前来探秘!✨

这里有:

  • 硬核技术干货:编程技巧、开发经验、踩坑指南,带你解锁技术新姿势!
  • 趣味开发日常:代码背后的脑洞故事、工具测评,让技术圈不再枯燥~
  • 独家资源分享:开源项目、学习资料包,助你打怪升级快人一步!

👉 点击直达→ 盹猫猫的个人小站 👈

🌟 来逛逛吧,说不定能挖到你正在找的技术宝藏哦~

目录

[​​1. 🐛 错误现象​​](#1. 🐛 错误现象)

​​报错信息(关键部分)

​​复现步骤​

[​​2. 🔍 问题分析​​](#2. 🔍 问题分析)

​​可能的原因​

[​​3. 🛠️ 解决方案​​](#3. 🛠️ 解决方案)

​​修复代码​

[​​4. 📚 经验总结​​](#4. 📚 经验总结)


欢迎来到盹猫的博客

本篇文章主要介绍了

关于"LoggerFactory is not a Logback LoggerContext but Logback is on ......"的解决方案

❤博主广交技术好友,喜欢文章的可以关注一下❤

📅 日期​​:2025-07-30

​​🔧 技术栈​​:Spring Boot 2.x / JDK 8

​​🏷️ 标签​​:#Java #BugFix #SpringBoot #Debug


​​1. 🐛 错误现象​​

​​报错信息(关键部分)

在引入百度短信调用SDK依赖以后

XML 复制代码
<dependency>
    <groupId>com.baidubce</groupId>
    <artifactId>bce-java-sdk</artifactId>
    <version>0.10.362</version>
</dependency>

运行时出现下述错误.

bash 复制代码
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/seaua/.m2/repository/org/apache/logging/log4j/log4j-slf4j-impl/2.15.0/log4j-slf4j-impl-2.15.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/seaua/.m2/repository/ch/qos/logback/logback-classic/1.2.11/logback-classic-1.2.11.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/seaua/.m2/repository/org/slf4j/slf4j-reload4j/1.7.36/slf4j-reload4j-1.7.36.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/seaua/.m2/repository/org/slf4j/slf4j-simple/1.7.36/slf4j-simple-1.7.36.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 [org.apache.logging.slf4j.Log4jLoggerFactory]
Exception in thread "restartedMain" java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
Caused by: java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.apache.logging.slf4j.Log4jLoggerFactory loaded from file:/home/seaua/.m2/repository/org/apache/logging/log4j/log4j-slf4j-impl/2.15.0/log4j-slf4j-impl-2.15.0.jar). If you are using WebLogic you will need to add 'org.slf4j' to prefer-application-packages in WEB-INF/weblogic.xml: org.apache.logging.slf4j.Log4jLoggerFactory
	at org.springframework.util.Assert.instanceCheckFailed(Assert.java:702)
	at org.springframework.util.Assert.isInstanceOf(Assert.java:621)
	at org.springframework.boot.logging.logback.LogbackLoggingSystem.getLoggerContext(LogbackLoggingSystem.java:294)
	at org.springframework.boot.logging.logback.LogbackLoggingSystem.beforeInitialize(LogbackLoggingSystem.java:118)
	at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationStartingEvent(LoggingApplicationListener.java:238)
	at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:220)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131)
	at org.springframework.boot.context.event.EventPublishingRunListener.starting(EventPublishingRunListener.java:79)
	at org.springframework.boot.SpringApplicationRunListeners.lambda$starting$0(SpringApplicationRunListeners.java:56)
	at java.util.ArrayList.forEach(ArrayList.java:1259)
	at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:120)
	at org.springframework.boot.SpringApplicationRunListeners.starting(SpringApplicationRunListeners.java:56)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:298)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292)
	at com.uav.BootApplication.main(BootApplication.java:14)
	... 5 more

进程已结束,退出代码0

​​复现步骤​

使用排除法,引入该依赖或注释掉该pom依赖进行程序运行来判断是否是该依赖引起的问题.


​​2. 🔍 问题分析​​

​​可能的原因​

​出现问题后首先看一下主要的报错翻译,内容如下:

java.lang.IllegalArgumentException:LoggerFactory 不是 Logback LoggerContext,但类路径中包含 Logback。请移除 Logback 或其竞争实现(从文件:/home/seaua/.m2/repository/org/apache/logging/log4j/log4j-slf4j-impl/2.15.0/log4j-slf4j-impl-2.15.0.jar 加载的类 org.apache.logging.slf4j.Log4jLoggerFactory)。如果您使用的是 WebLogic,则需要在 WEB-INF/weblogic.xml 的 prefer-application-packages 中添加"org.slf4j":org.apache.logging.slf4j.Log4jLoggerFactory

这里提到了​移除Logback和slf4j,则可能是Logback与其它日志依赖代码冲突,导致启动时不知道使用哪个类.

​​3. 🛠️ 解决方案​​

​​修复代码​

​对存在问题的依赖进行移除,保证代码正常运行.

​​修复前依赖(问题代码)

XML 复制代码
<dependency>
<groupId>com.baidubce</groupId>
<artifactId>bce-java-sdk</artifactId>
<version>0.10.362</version>
</dependency>

​​​修复后依赖(安全代码)​

XML 复制代码
<dependency>
<groupId>com.baidubce</groupId>
<artifactId>bce-java-sdk</artifactId>
<version>0.10.362</version>
<exclusions>
    <exclusion>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
    </exclusion>
    <exclusion>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
    </exclusion>
</exclusions>
</dependency>

​​4. 📚 经验总结​​

该错误主要容易出现在引入过多三方依赖的情况下,由于不同公司使用的日志依赖版本不同,而导致的版本冲突问题,在排除冲突依赖后,程序可以正常启动还有就是一定要从报错中发现问题,直接翻译一下就基本可以定位问题所在.​​​

​​📢 你的代码里有没有类似的坑?欢迎评论区讨论!​​ 🚀


​​🔗 相关资源​

如果你对区块链 内容感兴趣可以查看我的专栏:小试牛刀-区块链​

​​✍️ 作者​​:盹猫

​​📅 最后更新​​:2025-07-30


​​🔔 关注我,获取更多技术干货!​​ 🚀

相关推荐
WeiXin_DZbishe5 小时前
基于springboot宠物领养系统-计算机毕设 附源码【课程设计】94217
vue.js·spring boot·python·django·php·课程设计
架构技术专栏6 小时前
Agent 工具调用:从工具声明到执行反馈
前端·人工智能·后端
vx_bisheyuange6 小时前
基于SpringBoot的体育商品推荐系统
spring boot·毕业设计
别动我齐刘海7 小时前
C++ 工程化学习
java·linux·前端·c++·学习·机器学习·机器人
码事漫谈7 小时前
你让AI干的活,它可能只干了十分之一——而你根本看不出来
后端
Wx-bishekaifayuan7 小时前
express皖美特色农产品网售系统53118-计算机课程设计、毕业设计
人工智能·spring boot·后端·python·课程设计·express·旅游
Wx-bishekaifayuan8 小时前
springboot汉中旅游服务平台41442-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
code2cat8 小时前
Java进阶篇之AtomicLongFieldUpdater:把累计额度留在对象字段中
java·cas·并发编程
WeiXin_DZbishe8 小时前
基于springboot城市公交实时运营与调度系统-计算机毕设 附源码【课程设计】66173
java·vue.js·spring boot·后端·python·php·课程设计
泡茶喝茶写代码8 小时前
A股量化数据工程:从 REST 接口到策略信号(第 18 篇):放量缩量异动扫描
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口