Jenkins显示构建成功但未实际运行,出现ClassCastException问题求助
解决Jenkins构建无执行、cleanUpObjectStreamClassCaches抛ClassCastException的问题
问题根源
这个报错是Workflow CPS插件清理ObjectStreamClass缓存时的类转换错误——Java内部的缓存类无法强转为ConcurrentMap,大概率是Jenkins缓存损坏或者JVM类加载器冲突导致的,和你手动构建正常、磁盘充足的情况吻合,确实是Jenkins环境层面的问题。
清除缓存的具体操作
1. 清理Jenkins全局缓存
- 停止Jenkins服务
- 找到Jenkins主目录(默认Linux路径为
/var/lib/jenkins,Windows路径为C:\Program Files\Jenkins),删除目录下的cache文件夹 - 顺便删除异常任务对应的
workspace子目录,避免残留异常缓存文件 - 重启Jenkins服务
2. 用脚本清理ObjectStreamClass缓存
- 进入Jenkins后台的Manage Jenkins > Script Console
- 复制运行以下Groovy脚本,直接清理目标缓存:
import java.io.ObjectStreamClass import java.lang.reflect.Field Field cachesField = ObjectStreamClass.class.getDeclaredField("caches") cachesField.setAccessible(true) def caches = cachesField.get(null) Field localCacheField = caches.getClass().getDeclaredField("localCache") localCacheField.setAccessible(true) def localCache = localCacheField.get(caches) localCache.clear() println "ObjectStreamClass本地缓存已清除"
3. 重置异常Pipeline任务
- 打开异常任务的配置页面,找到Pipeline配置板块
- 如果是从SCM拉取的Jenkinsfile,点击Reload from SCM;非SCM管理的任务直接重新保存配置
- 手动触发一次构建,观察执行状态
其他修复步骤
- 更新Workflow相关插件:该ClassCastException问题在旧版本的Workflow CPS插件中存在,更新至2.89及以上的稳定版可修复类加载兼容问题
- 重启Jenkins代理节点:服务器状态正常不代表代理节点的JVM缓存无异常,重启所有代理节点后再尝试触发构建
- 检查JVM版本兼容性:确保Jenkins使用的JDK为11或17这类稳定版本,避免使用过新或过旧的JDK版本引发插件兼容问题
- 清理日志和临时文件:删除Jenkins主目录下
logs文件夹中的旧日志,以及tmp目录下的临时文件,减少缓存文件堆积
验证方法
- 从Jenkins UI触发构建,检查是否显示构建时长、代理节点是否正常执行任务
- 查看Jenkins日志,确认
cleanUpObjectStreamClassCaches相关的ClassCastException不再出现 - 连续触发多次构建,确保问题不再复现
内容的提问来源于stack exchange,提问作者Rob Graham
相关产品推荐
相关产品推荐

