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

Jenkins从LTS 2.19.3升级至2.46.3后部分构建报StackOverflowError求助

Jenkins LTS升级后部分任务出现StackOverflowError的排查方案

你好,从你描述的情况来看,升级Jenkins LTS从2.19.3到2.46.3后,仅部分任务触发StackOverflowError,且错误堆栈指向Guice的委托调用循环,这大概率是依赖注入的循环依赖冲突或者Jenkins核心/插件的兼容性问题导致的。下面给你具体的排查和解决方向:

先梳理你的错误场景和信息

错误堆栈信息

Parsing POMs
FATAL: null
java.lang.StackOverflowError
at com.google.inject.internal.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:36)
at com.sun.proxy.$Proxy71.lookup(Unknown Source)
at sun.reflect.GeneratedMethodAccessor159.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.google.inject.internal.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:50)
at com.sun.proxy.$Proxy71.lookup(Unknown Source)
at sun.reflect.GeneratedMethodAccessor159.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)

涉事项目POM片段

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.mywork.mymodule</groupId>
<artifactId>MyFramework</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>My Framework</name>
<!-- 省略后续内容 -->

具体排查与解决步骤

  • 优先检查插件兼容性:那些出错的5-6个任务,有没有使用特定的Maven插件(比如maven-hpi-plugin、自定义Jenkins集成插件)?Jenkins 2.46.3 LTS的核心Guice版本比2.19.3要新,旧版本的插件可能和新核心的Guice逻辑冲突,导致循环调用。建议你更新这些任务用到的Maven插件到对应兼容版本,或者暂时禁用非必要插件测试。
  • 排查Guice依赖冲突:在涉事项目的POM里,有没有显式引入com.google.inject:guice相关依赖?Jenkins核心已经自带了Guice,项目里的Guice版本如果和核心版本不一致,会触发类加载冲突,进而导致循环依赖的栈溢出。你可以用mvn dependency:tree命令输出依赖树,查找Guice的重复依赖,然后通过<exclusions>排除项目里的Guice依赖,直接使用Jenkins核心提供的版本。
  • 临时缓解:扩大JVM栈空间:如果需要先让任务跑起来,可以修改Jenkins的JVM启动参数,增加栈大小,比如在Jenkins.xml(Windows)或者jenkins.sh(Linux)里添加-Xss2m(默认一般是1m),扩大栈容量可以暂时绕过循环调用的栈溢出,但这只是治标,还是要找根源。
  • 检查POM的依赖链/继承关系:涉事任务的POM有没有复杂的父POM继承?父POM里可能引入了多个互相依赖的组件,升级Jenkins后,这些组件的依赖处理逻辑变化,触发了循环注入。可以尝试简化POM,比如暂时去掉父POM,或者注释掉一些非核心依赖,逐步定位问题点。
  • 对比正常任务和异常任务的差异:把出错的任务和正常运行的任务做对比,看看它们的构建配置(比如Maven目标、插件配置、参数)、POM结构有什么不同,差异点很可能就是问题所在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:59:11