Jenkins从2.346.3升级至2.375.1后UI未处理异常的解决方法
Jenkins 2.346.3 → 2.375.1 升级后UI异常的解决方法
问题分析
日志中的java.lang.NoSuchMethodException: org.jenkins.ui.icon.IconSet.getSymbol(...)明确指向插件与Jenkins核心版本不兼容:2.375.1版本对IconSet类的方法签名做了更新,而旧版本的部分插件仍在调用废弃的方法,导致UI渲染失败。
解决方案
1. 以安全模式启动Jenkins
安全模式会禁用所有插件,绕过兼容性问题进入UI:
docker run -d --name jenkins-fix -p 8080:8080 -v /your/host/jenkins_home:/var/jenkins_home jenkins/jenkins:2.375.1 --safe-mode
替换/your/host/jenkins_home为实际的Jenkins数据目录挂载路径。
2. 处理不兼容插件
进入Jenkins UI后,依次操作:
- 进入「Manage Jenkins」→「Manage Plugins」→「Installed」标签
- 更新所有可升级的插件:优先升级涉及UI、图标、主题类的插件(如Simple Theme、Material Theme等)
- 卸载可疑插件:若更新后仍报错,卸载长期未更新或与图标渲染相关的插件,尤其是升级前新增的插件
3. 清理war缓存
Jenkins会缓存旧版本的war文件,手动清理后会重新生成适配新版本的文件:
docker exec -it jenkins-fix rm -rf /var/jenkins_home/war docker restart jenkins-fix
4. 恢复正常启动
确认UI正常后,停止安全模式容器,重新以正常参数启动Jenkins即可。
预防建议
- 升级前备份Jenkins数据目录,避免数据丢失
- 先在测试环境验证插件兼容性,优先将所有插件升级到兼容目标Jenkins版本的最新版,再升级核心
- 定期清理Jenkins缓存文件,避免旧文件干扰新版本运行
内容的提问来源于stack exchange,提问作者Tzach Solomon
相关产品推荐
相关产品推荐

