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

Jenkins升级后解压异常:ClassCastException与NotSerializableException

问题解决方案

一、解决AntBuilder的ClassCastException

Jenkins LTS 2.346.x升级后,Ant类加载机制或依赖版本发生变化,直接实例化AntBuilder会触发类型转换异常,推荐改用官方Ant插件提供的ant步骤:

  • 确保Ant插件已更新至适配2.346.2 LTS的版本
  • 在流水线中直接调用ant的unzip任务,示例代码:
    ant.unzip(src: 'path/to/your/file.zip', dest: 'target/unzip/dir')
    

二、解决NotSerializableException

该异常源于Jenkins流水线的快照序列化机制——即使解压操作成功,若上下文存在非序列化对象,后续快照保存时会失败。以下是两种解压方式的针对性处理:

1. 针对pipeline-utility-steps的unzip命令

避免将unzip的返回值保留在流水线全局上下文,或用@NonCPS标记处理逻辑(该标记会让方法跳过Jenkins序列化流程):

@NonCPS
def unzipWithUtilitySteps() {
    unzip zipFile: 'path/to/your/file.zip', target: 'target/unzip/dir'
}

// 流水线中调用方法
unzipWithUtilitySteps()

2. 针对sh命令解压

同理,不要将sh执行的返回结果赋值给需要序列化的变量,或用@NonCPS包裹执行逻辑:

@NonCPS
def unzipWithShell() {
    sh 'unzip path/to/your/file.zip -d target/unzip/dir'
}

// 流水线中调用方法
unzipWithShell()

三、通用排查与验证

  • 查看Jenkins系统日志,定位NotSerializableException指向的具体类,直接处理该非序列化对象
  • 确认所有流水线相关插件(pipeline-utility-steps、Pipeline: Basic Steps等)均更新至2.346.2 LTS兼容的最新版本
  • Docker容器环境下,检查工作目录挂载权限,确保Jenkins有权限读写解压目录,避免因文件权限导致的隐式上下文异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:45:57