You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot启动存在logback和gradle-api两个SLF4J实现冲突如何解决

gradle-api出现在类路径的原因
  1. IDE运行配置问题:IntelliJ IDEA等IDE默认将应用运行、测试操作委派给Gradle执行时,Gradle进程自身的运行时依赖(包括gradle-api)会被带入应用的类路径,这是该问题最常见的诱因。
  2. 依赖传递引入:你依赖的子模块:api-layer或二方包com.package:integration-app-api:1.0.0-SNAPSHOT内部声明了gradleApi()依赖,被传递到当前项目的运行时类路径。
  3. 构建脚本配置问题:如果项目使用了自定义Gradle插件、buildSrc目录下的构建逻辑,错误将gradle-api声明为implementation而非compileOnly依赖,也会被带到应用运行时。
移除gradle-api的解决方案

首先执行以下命令定位gradle-api的来源:

./gradlew dependencies --configuration runtimeClasspath | grep gradle-api

根据定位结果选择对应解决方案:

  • 如果是依赖传递引入:在build.gradle.kts中添加全局排除规则即可:
configurations.runtimeClasspath {
    exclude(group = "org.gradle", module = "gradle-api")
}

如果是特定二方包/子模块引入,也可以在对应依赖的声明处单独添加排除规则。

  • 如果是IDE委派运行导致:打开IntelliJ IDEA设置 → 构建、执行、部署 → 构建工具 → Gradle,找到「针对运行/测试使用」选项,选择「IntelliJ IDEA」,后续启动应用会直接使用项目模块的类路径,不会带入Gradle自身的依赖。
手动选择SLF4J实现的方法

如果暂时无法移除gradle-api,可通过以下方式强制指定日志实现:

  • 保留logback作为实现:在应用启动的JVM参数中添加以下配置,强制Spring Boot使用logback日志系统:
-Dorg.springframework.boot.logging.LoggingSystem=logback
  • 改用Gradle内置的SLF4J实现:删除build.gradle.kts中显式引入的ch.qos.logback:logback-classic依赖,同时排除Spring Boot默认传递的logback依赖:
implementation("org.springframework.boot:spring-boot-starter") {
    exclude(group = "ch.qos.logback", module = "logback-classic")
}

内容的提问来源于stack exchange,提问作者Kirill Achramionok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 22:15:04