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

Spring Boot 1.5.4升级至2.0.1遇log4j类缺失错误求助

解决Spring Boot 1.5.4升级到2.0.1时的java.lang.NoClassDefFoundError: org/apache/log4j/Logger错误

我之前帮同事处理过一模一样的问题,你遇到的这个报错本质是Spring Boot版本升级后日志依赖体系变化导致的兼容性问题,下面给你拆解原因和解决方案:

问题背景

你把Spring Boot应用从1.5.4升级到2.0.1后,原本正常的日志功能抛出了类找不到的错误,已完成的依赖升级包括:

  • Spring Boot:1.5.4 → 2.0.1
  • Spring Framework:4.3.12 → 5.0.5
  • Jackson:2.9.0(版本无变更)

问题根源

Spring Boot 2.x对默认日志依赖做了关键调整:

  • 在1.5.x版本中,项目可能通过Spring Boot的日志starter间接依赖了log4j相关的桥接包,或者你的代码隐式依赖了这些包,所以日志功能能正常运行
  • 升级到2.0.x后,官方移除了这些默认的log4j绑定依赖,但你的代码仍然直接引用了org.apache.log4j.Logger类,导致运行时JVM找不到该类

已验证的解决方案

通过手动添加SLF4J与log4j12的绑定依赖,以及SLF4J的API依赖,就能解决这个问题。在你的Maven pom.xml中补充以下依赖:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.6.4</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.6.4</version> <!-- 建议和slf4j-api版本保持一致,避免版本冲突 -->
</dependency>

额外优化提示

  • 版本一致性:务必保证slf4j-api和slf4j-log4j12的版本相同,否则可能引发其他依赖冲突问题
  • Gradle用户适配:如果你的项目用Gradle构建,对应的依赖配置如下:
implementation 'org.slf4j:slf4j-api:1.6.4'
implementation 'org.slf4j:slf4j-log4j12:1.6.4'
  • 长期优化建议:建议逐步将代码中的org.apache.log4j.Logger替换为SLF4J标准的org.slf4j.Logger,这更符合Spring Boot的日志最佳实践,也能避免后续版本升级时再遇到类似兼容性问题

内容的提问来源于stack exchange,提问作者ritesh kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:07:05