Jenkins从2.89.2升级到2.107.3时XML版本报错求助
Jenkins升级后XML 1.1解析错误的替代解决方法
我之前也碰到过类似的版本兼容性问题,结合你的环境(CentOS 6.8 + Java 1.8.0_45 + Jenkins 2.107.3),可以试试下面几个不用手动修改config.xml的方案:
原因分析
这个报错本质是Jenkins 2.107.3默认生成的config.xml用了XML 1.1规范,但你环境里的MXParser(XStream依赖的XML解析器)版本较旧,仅支持XML 1.0,导致启动时解析失败。
方案1:添加JVM启动参数强制XML 1.0输出
这是最简便的方法,不需要修改Jenkins内部文件:
- 找到Jenkins的启动配置文件,CentOS 6.8下通常是
/etc/sysconfig/jenkins或者/etc/init.d/jenkins - 在
JENKINS_JAVA_OPTIONS(或类似参数)中加入:-Dxstream.xml.version=1.0 - 保存配置后重启Jenkins服务:
这样Jenkins后续生成的配置文件都会默认用XML 1.0,彻底避免版本不兼容问题。service jenkins restart
方案2:升级XmlPullParser依赖库
如果想保留XML 1.1的支持,可以替换Jenkins的XPP3库:
- 停止Jenkins服务:
service jenkins stop - 进入Jenkins的
WEB-INF/lib目录(通常在/var/lib/jenkins/war/WEB-INF/lib) - 找到旧的
xpp3-*.jar文件(比如xpp3-1.1.4b.jar),替换为支持XML 1.1的版本,比如xpp3-1.1.4c.jar - 同时确保
xstream-*.jar版本和Jenkins 2.107.3兼容(建议使用官方对应版本的XStream) - 重启Jenkins服务,此时解析器就能识别XML 1.1格式了。
方案3:升级Java版本
你的Java 1.8.0_45确实比较老旧,新版本的OpenJDK 8(比如1.8.0_301及以上)自带的XML解析器已经支持XML 1.1规范:
- 在CentOS 6.8上安装新版OpenJDK 8(注意要处理好系统依赖)
- 修改Jenkins配置文件中的Java路径,指向新安装的JDK
- 重启Jenkins,就能正常解析XML 1.1的
config.xml了。
如果以上方案都暂时无法实施,手动修改config.xml的XML版本到1.0其实是完全可靠的长期方案——XML 1.0和1.1在Jenkins的配置场景下几乎没有功能差异,不会影响服务的正常运行。
内容的提问来源于stack exchange,提问作者Carlos.A.Lopez
相关产品推荐
相关产品推荐

