升级Jenkins后无法启动:DefaultCrumbIssuer缺失描述符
解决Jenkins升级后持续重启及
DefaultCrumbIssuer缺失Descriptor问题 核心问题分析
报错java.lang.AssertionError: class hudson.security.csrf.DefaultCrumbIssuer is missing its descriptor本质是旧版本插件与新版Jenkins核心不兼容,叠加JDK升级后的环境变化,同时Jetty默认Header大小限制触发了重启循环。
分步解决方法
1. 安全模式启动修复插件兼容性
先以安全模式启动Jenkins,仅加载核心插件,跳过第三方插件初始化:
java -jar jenkins.war --safe-mode
进入系统后:
- 打开「插件管理」→「已安装」页面
- 筛选标记为「不兼容」的插件,优先卸载或更新CSRF相关插件(如
csrf-protection) - 更新所有核心插件至最新兼容版本,完成后重启Jenkins
2. 调整Jetty Header缓冲区大小
日志中Header is too large 8193>8192是Jetty默认8KB Header限制导致的,会打断初始化流程。修改启动参数增大缓冲区:
java -Dhudson.headerBufferSize=16384 -jar jenkins.war
可根据实际情况调整为更大值(如32768)
3. 清理残留的旧配置
检查Jenkins主目录(默认~/.jenkins)下的config.xml,找到并删除以下旧配置段:
<crumbIssuer class="hudson.security.csrf.DefaultCrumbIssuer"/>
保存后重启Jenkins,系统会自动生成新版本兼容的CrumbIssuer配置。
4. 验证JDK环境配置
确保Jenkins使用正确的OpenJDK 17:
- 执行
java -version确认输出为OpenJDK 17.x.x - 若启动时仍调用旧JDK,需明确指定JDK路径启动:
/path/to/openjdk-17/bin/java -jar jenkins.war
后续预防建议
- 跨大版本升级Jenkins前,先将所有插件更新至旧版本兼容的最新版
- 升级前备份Jenkins主目录(
~/.jenkins),避免配置丢失 - 优先通过Ubuntu官方包管理(
apt)升级,而非直接替换war包,减少环境适配问题
内容的提问来源于stack exchange,提问作者PHZ.fi-Pharazon
相关产品推荐
相关产品推荐

