使用Git作为源码管理时保存Jenkins Maven项目报错求助
解决Jenkins保存Git源码管理任务时的序列化异常问题
问题分析
你遇到的InaccessibleObjectException是Java 17模块系统的权限限制导致的——Jenkins的核心或插件代码在未命名模块中尝试访问java.util包的内部API,但Java 17默认关闭了这类跨模块的非公开API访问,最终引发序列化失败。
解决方案
1. 添加JVM参数开放模块访问权限
修改Jenkins启动配置,通过JVM参数放宽模块访问限制:
- 打开CentOS上Jenkins的配置文件
/etc/sysconfig/jenkins - 找到
JENKINS_JAVA_OPTIONS项,追加以下参数:
最终配置示例:--add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.util.concurrent=ALL-UNNAMEDJENKINS_JAVA_OPTIONS="-Djava.awt.headless=true --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.util.concurrent=ALL-UNNAMED" - 重启Jenkins服务生效:
systemctl restart jenkins
2. 升级Git插件到兼容版本
旧版Git插件可能存在Java 17适配问题:
- 进入Jenkins的插件管理页面
- 搜索
Git plugin,将其升级到适配Jenkins 2.401.1的最新版本(推荐4.12.0及以上,该版本修复了部分Java 17兼容bug) - 插件升级完成后重启Jenkins
3. 升级系统Git版本
你当前使用的Git 1.8.3.1版本过旧,可能与新版Jenkins插件存在兼容冲突:
- 执行以下命令升级Git到2.30+版本:
yum install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm yum update git - 升级完成后,在Jenkins全局工具配置中更新Git的可执行文件路径,指向新版本的Git
4. 创建新任务排查配置异常
如果以上步骤无效,尝试创建全新的Maven任务,仅配置Git源码管理和基础Maven构建步骤,排查旧任务配置是否存在异常
验证
完成操作后,修改任务并保存,检查UI是否正常,同时查看Jenkins日志/var/log/jenkins/jenkins.log,确认InaccessibleObjectException是否消失。
内容的提问来源于stack exchange,提问作者Shiva
相关产品推荐
相关产品推荐

