Spring Boot测试启动失败:SLF4J日志多实现冲突解决方案

在开发 Spring Boot +LangGraph4J项目时,打算利用阿里云百炼的文生图模型生成Logo图片,在引入了阿里云百炼 SDK(dashscope-sdk-java)后,执行单元测试(LogoGeneratorToolTest)时,项目直接启动失败,控制台打印大量报错日志:

bash 复制代码
SLF4J(W): Class path contains multiple SLF4J providers.
SLF4J(W): Found provider [org.slf4j.simple.SimpleServiceProvider@206a70ef]
SLF4J(W): Found provider [ch.qos.logback.classic.spi.LogbackServiceProvider@292b08d6]
...
Caused by: java.lang.IllegalStateException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.slf4j.simple.SimpleLoggerFactory loaded from .../slf4j-simple-2.0.17.jar)

原因分析

SLF4J(Simple Logging Facade for Java)是日志门面接口,本身不实现日志打印功能,需要绑定一个具体的日志实现组件(如Logback、Log4j、SLF4J-Simple等)。

其中,Logback是由spring-boot-starter-logging自动引入,Spring Boot官方推荐的日志组件,支持日志配置、文件滚动、异步打印等企业级特性。

而SLF4J-Simple是由阿里通义SDK(dashscope-sdk-java)依赖传递引入,是一个轻量但功能简单的日志实现。

由于在这个项目类路径下同时存在两个SLF4J的实现组件,违反了"一个日志门面+一个实现"的规范,导致Spring容器启动时无法确定使用哪个日志工厂,最终加载应用上下文失败。

解决方案

保留Logback,排除冲突的SLF4J-Simple依赖,修改pom.xml,排除冲突依赖,通过标签排除其中的slf4j-simple依赖,具体配置如下:

bash 复制代码
<!-- 阿里通义SDK依赖 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dashscope-sdk-java</artifactId>
    <version>2.21.1</version>
    <!-- 排除冲突的slf4j-simple依赖 -->
    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
        </exclusion>
    </exclusions>
</dependency>

接下来,打开Maven面板➡️ 右键项目➡️选择"Reload Project",等待依赖刷新完成,重新运行之前失败的单元测试,日志冲突问题解决。

相关推荐
李慕婉学姐14 小时前
Springboot智慧社区系统设计与开发6n99s526(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
掘金酱14 小时前
「寻找年味」 沸点活动|获奖名单公示🎊
前端·人工智能·后端
颜酱14 小时前
栈的经典应用:从基础到进阶,解决LeetCode高频栈类问题
javascript·后端·算法
QQ51100828514 小时前
python+springboot+django/flask的校园资料分享系统
spring boot·python·django·flask·node.js·php
WeiXin_DZbishe14 小时前
基于django在线音乐数据采集的设计与实现-计算机毕设 附源码 22647
javascript·spring boot·mysql·django·node.js·php·html5
玹外之音14 小时前
Spring AI MCP 无状态服务器实战:构建AI智能用户管理系统
java·后端
what丶k14 小时前
Spring AI 多模态开发全解析:从入门到企业级落地
后端·spring·ai编程
ATCB14 小时前
零门槛!PythonAnywhere 免费部署全指南:不止 Django,这些项目都能搭(附主流平台对比)
后端·python·django
雨落Re15 小时前
从设计到开发,过年我用十天使用AI搭建了一个完整的博客系统
前端·后端
追风筝的人er15 小时前
企业管理系统如何实现自定义首页与千人千面?RuoYi Office 给出了完整方案
vue.js·spring boot·spring cloud