Spring Boot 3.3.4启动失败,报SizeAndTimeBasedFNATP类找不到异常该如何解决?
错误详情
Spring Boot (3.3.4) 应用启动失败,报错java.lang.ClassNotFoundException: ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP
ERROR in ch.qos.logback.core.model.processor.ImplicitModelHandler - 无法创建类型为[ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP]的组件[timeBasedFileNamingAndTriggeringPolicy] java.lang.ClassNotFoundException: ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP
问题原因
Spring Boot 3.3.x集成的Logback版本(1.5.x)中,SizeAndTimeBasedFNATP类已被整合到SizeAndTimeBasedRollingPolicy中,旧类路径不再有效,若配置文件仍引用旧类名则会触发该异常。
解决方案
修改Logback配置文件
找到项目中的logback-spring.xml或logback.xml,将原基于SizeAndTimeBasedFNATP的配置替换为SizeAndTimeBasedRollingPolicy:- 旧配置示例:
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>logs/app.%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> </appender> - 新配置示例:
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>logs/app.%d{yyyy-MM-dd}.%i.log</fileNamePattern> <maxFileSize>100MB</maxFileSize> <!-- 可选:设置日志保留天数 --> <maxHistory>30</maxHistory> </rollingPolicy> </appender>
- 旧配置示例:
清理依赖冲突
检查项目的pom.xml(Maven)或build.gradle(Gradle),移除手动引入的低版本Logback依赖,让Spring Boot的依赖管理自动控制Logback版本,避免版本不一致导致的类缺失。
内容的提问来源于stack exchange,提问作者Amit Chaurasia

