Spring Boot 3.5升级后GitLab流水线测试中调用log.info()出现TemporalAccessor为null的NullPointerException问题求助
Spring Boot 3.5升级后GitLab流水线测试中调用log.info()出现TemporalAccessor为null的NullPointerException问题求助
问题描述
我最近将项目升级到Spring Boot 3.5.3(此前版本为3.4.4),同时同步升级了一批依赖库,结果在GitLab流水线的测试阶段执行log.info()时触发了NullPointerException,但本地运行完全正常。项目中使用Lombok的@Slf4j注解来生成日志实例。
本次升级的关键依赖项包括:
- Spring Boot父依赖:
org.springframework.boot:spring-boot-starter-parent从3.4.4 → 3.5.3 - Spring Cloud版本:2025.0.0
- AWS SDK相关版本:2.31.77
- JSON库版本:
org.json:json20250517 - Jacoco Maven插件:0.8.13
- Commons CSV:1.14.0
- Oracle JDBC驱动:从ojdbc8替换为ojdbc17
- 还有部分父服务传递过来的依赖,若需要更细节的信息我可以进一步排查
流水线容器环境信息
Java version: 17.0.15, vendor: Amazon.com Inc., runtime: /opt/java Apache Maven 3.9.9 (8e8579a9e***260186937) Maven home: /root/.m2/wrapper/dists/apache-maven-3.9.9/34***f1 Java version: 17.0.15, vendor: Amazon.com Inc., runtime: /opt/java Default locale: en_US, platform encoding: ANSI_X3.4-1968 OS name: "linux", version: "5.10.238-231.953.amzn2.x86_64", arch: "amd64", family: "unix"
异常堆栈信息
2025-07-14T04:05:00.639470Z 01E java.lang.NullPointerException: Cannot invoke "java.time.temporal.TemporalAccessor.getLong(java.time.temporal.TemporalField)" because "this.temporal" is null 2025-07-14T04:05:00.639478Z 01E at java.base/java.time.format.DateTimePrintContext.getValue(DateTimePrintContext.java:308) 2025-07-14T04:05:00.639480Z 01E at java.base/java.time.format.DateTimeFormatterBuilder$NumberPrinterParser.format(DateTimeFormatterBuilder.java:2763) 2025-07-14T04:05:00.639481Z 01E at java.base/java.time.format.DateTimeFormatterBuilder$CompositePrinterParser.format(DateTimeFormatterBuilder.java:2402) 2025-07-14T04:05:00.639483Z 01E at java.base/java.time.format.DateTimeFormatter.formatTo(DateTimeFormatter.java:1849) 2025-07-14T04:05:00.639484Z 01E at java.base/java.time.format.DateTimeFormatter.format(DateTimeFormatter.java:1823) 2025-07-14T04:05:00.639485Z 01E at ch.qos.logback.core.util.CachingDateFormatter.format(CachingDateFormatter.java:74) 2025-07-14T04:05:00.639486Z 01E at ch.qos.logback.core.util.StatusPrinter2.buildStr(StatusPrinter2.java:180) 2025-07-14T04:05:00.639487Z 01E at ch.qos.logback.core.util.StatusPrinter.buildStr(StatusPrinter.java:99) 2025-07-14T04:05:00.639488Z 01E at ch.qos.logback.core.status.OnPrintStreamStatusListenerBase.print(OnPrintStreamStatusListenerBase.java:56) 2025-07-14T04:05:00.639489Z 01E at ch.qos.logback.core.status.OnPrintStreamStatusListenerBase.addStatusEvent(OnPrintStreamStatusListenerBase.java:63) 2025-07-14T04:05:00.639490Z 01E at org.springframework.boot.logging.logback.SystemStatusListener.addStatusEvent(SystemStatusListener.java:71) 2025-07-14T04:05:00.639492Z 01E at ch.qos.logback.core.BasicStatusManager.fireStatusAddEvent(BasicStatusManager.java:86) 2025-07-14T04:05:00.639493Z 01E at ch.qos.logback.core.BasicStatusManager.add(BasicStatusManager.java:58) 2025-07-14T04:05:00.639494Z 01E at ch.qos.logback.core.spi.ContextAwareBase.addStatus(ContextAwareBase.java:80) 2025-07-14T04:05:00.639495Z 01E at ch.qos.logback.core.spi.ContextAwareBase.addError(ContextAwareBase.java:105) 2025-07-14T04:05:00.639496Z 01E at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAppenderBase.java:89) 2025-07-14T04:05:00.639497Z 01E at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:51) 2025-07-14T04:05:00.639498Z 01E at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:272) 2025-07-14T04:05:00.639499Z 01E at ch.qos.logback.classic.Logger.callAppenders(Logger.java:259) 2025-07-14T04:05:00.639500Z 01E at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:426) 2025-07-14T04:05:00.639501Z 01E at ch.qos.logback.classic.Logger.filterAndLog_0_Or3Plus(Logger.java:386) 2025-07-14T04:05:00.639502Z 01E at ch.qos.logback.classic.Logger.info(Logger.java:584) 2025-07-14T04:05:00.639503Z 01E at com.myapp.services.MyService.doSomething(MyService.java:107)
触发异常的代码行(MyService.java:107):
log.info("Updating... request ");
已尝试的操作
- 注释掉触发异常的
log.info()语句后,该位置的报错消失,但下一处log.info()会触发完全相同的异常,显然无法通过注释所有日志语句来解决问题。
求助
有没有同学遇到过类似的问题?或者能帮我分析下可能的根因?比如是不是依赖冲突导致Logback的日期格式化组件出现了初始化异常?或者流水线环境的某些配置(比如编码、时区)和本地不一致引发的问题?
内容来源于stack exchange
相关产品推荐
相关产品推荐

