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

Spring Boot定时任务Tomcat关闭时触发Illegal Access异常排查

Tomcat关闭时Spring Boot定时任务抛出异常?这绝对不正常!

先直接给你结论:这种带有IllegalStateException和NoClassDefFoundError的异常堆栈完全不属于正常关闭行为,核心原因是你的项目缺失了关键日志依赖,导致Spring销毁定时任务上下文时出现类加载失败。

背后的原因分析

你的Spring Boot WAR应用配置了定时任务@Scheduled(cron = "0 0 4 15/1 3/10 ?"),在Tomcat关闭阶段,Spring会触发定时任务的销毁逻辑。而Spring默认依赖logback作为日志框架,这个销毁过程中需要调用logback的核心类——但你的项目里刚好缺了logback-core依赖,就导致了类找不到的错误,进而引发了后续的异常。

这种依赖缺失通常是因为:

  • pom.xml中不小心排除了logback相关组件
  • 依赖传递链被其他依赖打断(比如引入其他日志框架导致冲突)
  • 打包过程中遗漏了这个核心依赖

你找到的解决方案完全正确

手动添加logback-core(版本1.2.3)依赖确实能解决问题,它补上了缺失的核心类,让Spring在销毁定时任务上下文时能正常执行日志相关逻辑,不会再抛出异常。具体的依赖配置如下:

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.2.3</version>
</dependency>

补充一句:如果你的项目已经引入了logback-classic,理论上它会自动传递依赖logback-core,但如果存在依赖冲突或者主动排除的情况,就必须显式声明这个依赖来确保类加载正常。

内容的提问来源于stack exchange,提问作者Thomas Lang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:13:35