You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已安装Java 11但Jenkins启动失败,请求问题排查帮助

解决Java 11下Jenkins启动时NoClassDefFoundError: sun.util.calendar.ZoneInfoFile问题

问题描述

已安装Java 11,启动Jenkins多次失败,启动日志如下:

-- jenkins.service 已开始启动。
                  运行路径: /usr/share/java/jenkins.war
                  java.lang.NoClassDefFoundError: 无法初始化类 sun.util.calendar.ZoneInfoFile
                  at java.base/sun.util.calendar.ZoneInfo.getTimeZone(ZoneInfo.java:588)
                  at java.base/java.util.TimeZone.getTimeZone(TimeZone.java:577)
                  at java.base/java.util.TimeZone.setDefaultZone(TimeZone.java:682)
                  at java.base/java.util.TimeZone.getDefaultRef(TimeZone.java:653)
                  at java.base/java.util.TimeZone.getDefault(TimeZone.java:642)
                  at java.base/java.util.Calendar.defaultTimeZone(Calendar.java:1679)
                  at java.base/java.util.Calendar.getInstance(Calendar.java:1660)
                  at java.base/java.text.SimpleDateFormat.initializeCalendar(SimpleDateFormat.java:676)
                  at java.base/java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:620)
                  at java.base/java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:599)
                  at io.jenkins.lib.support_log_formatter.SupportLogFormatter.lambda$static$0(SupportLogFormatter.java:47)
                  at java.base/java.lang.ThreadLocal$SuppliedThreadLocal.initialValue(ThreadLocal.java:305)
                  at java.base/java.lang.ThreadLocal.setInitialValue(ThreadLocal.java:195)
                  at java.base/java.lang.ThreadLocal.get(ThreadLocal.java:172)
                  at io.jenkins.lib.support_log_formatter.SupportLogFormatter.formatTime(SupportLogFormatter.java:53)
                  at io.jenkins.lib.support_log_formatter.SupportLogFormatter.format(SupportLogFormatter.java:63)
                  at java.logging/java.util.logging.StreamHandler.publish(StreamHandler.java:199)
                  at java.logging/java.util.logging.ConsoleHandler.publish(ConsoleHandler.java:95)

start jenkins success

解决方案

这个错误核心是Java无法初始化时区处理类,通常和时区配置、JDK完整性或系统环境有关,可按以下步骤排查:

  • 检查并修复系统时区
    执行timedatectl查看当前时区,确认时区有效(如Asia/Shanghai)。若时区错误,执行:

    timedatectl set-timezone Asia/Shanghai
    
  • 验证JDK完整性
    部分精简版JDK可能缺失时区数据,执行java -XshowSettings:properties -version查看user.timezone属性是否正常;也可检查系统时区文件:

    zdump /usr/share/zoneinfo/Asia/Shanghai
    

    若文件不存在或JDK不完整,重新安装完整的OpenJDK 11包。

  • 强制设置Jenkins启动时区
    修改Jenkins服务配置文件(通常为/etc/systemd/system/jenkins.service),在ExecStart行末尾添加时区参数:

    ExecStart=/usr/bin/java -Duser.timezone=Asia/Shanghai -jar /usr/share/java/jenkins.war
    

    然后重新加载服务并重启:

    systemctl daemon-reload
    systemctl restart jenkins
    
  • 修复系统Locale设置
    执行locale查看环境变量,确保LANG和LC_TIME为有效UTF-8 locale(如zh_CN.UTF-8),若异常执行:

    localectl set-locale LANG=zh_CN.UTF-8
    

内容的提问来源于stack exchange,提问作者Jovarie Inoc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 10:26:19