【问题标题】:Jenkins Fails to Start詹金斯无法启动
【发布时间】:2014-09-09 21:02:26
【问题描述】:

我们有一台运行 FreeBSD 9.1-p17 和 Jenkins 的服务器。我通过 PuTTY 与之交互。我们通过 FreeBSD 的端口集合从 Jenkins 1.458 升级到 1.570。由于这个启动问题,我们决定重新安装。

首先我们卸载了 Jenkins,然后我们将主 Jenkins 文件夹 (/usr/local/eweru-dev/jenkins) 移动到备份位置,然后重新安装(同样,从端口集合中)。重新安装时,我们保留上次安装时的用户“jenkins”。

现在,当我们尝试启动 Jenkins 时,我们得到一个错误。下面的错误来自于我们尝试通过导航到 /usr/local/share/jenkins 并输入 java -jar jenkins.war 来启动它。当我们尝试将其作为服务运行时(使用service jenkins onestart),我们会收到非常相似的消息。

该异常看起来与this blog 中的异常相似,但我尝试将 Jenkins 连接到 openjdk 7 和 8 均无济于事。

来自我们旧 Jenkins 安装的信息是否会进入这个系统,破坏东西?或者可能存在与 FreeBSD 9.1 的兼容性问题。

Running from: /usr/local/share/jenkins/jenkins.war
webroot: $user.home/.jenkins
Jul 18, 2014 10:53:51 AM winstone.Logger logInternal
INFO: Beginning extraction from war file
Jul 18, 2014 10:53:51 AM org.eclipse.jetty.util.log.JavaUtilLog info
INFO: jetty-8.y.z-SNAPSHOT
Jul 18, 2014 10:53:55 AM org.eclipse.jetty.util.log.JavaUtilLog info
INFO: NO JSP Support for , did not find org.apache.jasper.servlet.JspServlet
Jenkins home directory: /homes/maxerdwien/.jenkins found at: $user.home/.jenkins
Jul 18, 2014 10:53:55 AM hudson.util.BootFailure publish
SEVERE: Failed to initialize Jenkins
hudson.util.AWTProblem: java.lang.NullPointerException
        at hudson.WebAppMain.contextInitialized(WebAppMain.java:182)
        at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:782)
        at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:424)
        at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:774)
        at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:249)
        at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1242)
        at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717)
        at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:494)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
        at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
        at org.eclipse.jetty.server.Server.doStart(Server.java:282)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
        at winstone.Launcher.<init>(Launcher.java:154)
        at winstone.Launcher.main(Launcher.java:354)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at Main._main(Main.java:293)
        at Main.main(Main.java:98)
Caused by: java.lang.NullPointerException
        at sun.awt.X11FontManager.getDefaultPlatformFont(X11FontManager.java:779)
        at sun.font.SunFontManager$2.run(SunFontManager.java:433)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.font.SunFontManager.<init>(SunFontManager.java:376)
        at sun.awt.X11FontManager.<init>(X11FontManager.java:32)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
        at java.lang.Class.newInstance(Class.java:374)
        at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:83)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
        at java.awt.Font.getFont2D(Font.java:490)
        at java.awt.Font.getFamily(Font.java:1219)
        at java.awt.Font.getFamily_NoClientCode(Font.java:1193)
        at java.awt.Font.getFamily(Font.java:1185)
        at java.awt.Font.toString(Font.java:1682)
        at hudson.util.ChartUtil.<clinit>(ChartUtil.java:229)
        at hudson.WebAppMain.contextInitialized(WebAppMain.java:181)
        ... 19 more

Jul 18, 2014 10:53:56 AM org.eclipse.jetty.util.log.JavaUtilLog warn
WARNING: Failed startup of context w.{,file:/home/maxerdwien/.jenkins/war/},/homes/maxerdwien/.jenkins/war
java.lang.NullPointerException
        at jenkins.util.groovy.GroovyHookScript.run(GroovyHookScript.java:63)
        at hudson.util.BootFailure.publish(BootFailure.java:43)
        at hudson.WebAppMain.contextInitialized(WebAppMain.java:244)
        at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:782)
        at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:424)
        at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:774)
        at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:249)
        at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1242)
        at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717)
        at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:494)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
        at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
        at org.eclipse.jetty.server.Server.doStart(Server.java:282)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
        at winstone.Launcher.<init>(Launcher.java:154)
        at winstone.Launcher.main(Launcher.java:354)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at Main._main(Main.java:293)
        at Main.main(Main.java:98)

Jul 18, 2014 10:53:56 AM org.eclipse.jetty.util.log.JavaUtilLog info
INFO: Started SelectChannelConnector@0.0.0.0:8080
Jul 18, 2014 10:53:56 AM winstone.Logger logInternal
INFO: Winstone Servlet Engine v2.0 running: controlPort=disabled

任何帮助将不胜感激。我已经用谷歌搜索了好几天了。

【问题讨论】:

  • 这是一个猜测,但请检查您的 linux 中的 X 服务。如果它没有运行,请尝试启动它。 perpetualpc.net/srtd_xinit.html
  • “尝试将 Jenkins 连接到 openjdk7 和 8”是什么意思?你的意思是你的系统上都安装了?我相信该 Jenkins 版本推荐的 JDK 是 openjdk7。除非您的系统需要多个 JDK,否则您可能会考虑卸载所有 JDK,然后重新安装您想要的(openjdk7)。这可能不会解决任何问题,但至少会限制可能的错误来源。
  • @cgon 如何检查它是否正在运行? “ps -A”不显示任何看起来像 X 服务的东西。
  • @dg99 没错,默认的JDK是openjdk7。根据this blog post 的建议,我在rc.conf 中添加了一行jenkins_java_home="/usr/local/openjdk8 以覆盖默认值。詹金斯无法知道机器上是否存在其他 JDK,所以正如您所说,它可能无法解决任何问题。此外,服务器上还有其他程序需要不同的 JDK。
  • 同一软件的不同版本通过覆盖彼此在某些共享位置的文件而发生冲突的情况并不少见。发生这种情况时,即使你告诉 Jenkins 使用 jdk8,它也可能别无选择,只能加载一些 jdk7 文件。同样,我不确定这是否是问题所在,但绝对有可能。

标签: java jenkins freebsd


【解决方案1】:

FreeBSD 服务器是无头服务器。所以它没有安装任何图形,包括字体。

出于某种原因,Jenkins 会在加载时尝试访问字体。可以通过将选项 -Djava.awt.headless=true 添加到容器 JVM 来抑制此行为。这是对我有用的解决方案。

看起来有些操作系统可以识别这种类型的错误,但 FreeBSD 不能。 https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+got+java.awt.headless+problem

【讨论】:

【解决方案2】:

检查 jenkins 文件夹的权限。确保运行 jenkins 服务器的用户有权访问该文件夹。

【讨论】:

    【解决方案3】:

    对我来说-Djava.awt.headless=true 根本没有帮助。事实上,它已经在 Fedora 的默认配置中指定了,所以很有可能它也在默认的 FreeBSD 配置中。对我来说,它错过了 fontconfig 包。

    详情:http://vault-tec.info/post/98877792626/jenkins-service-unavailable

    【讨论】:

      【解决方案4】:

      我在这里面临同样的问题,添加 -Djava.awt.headless=true 没有帮助。我下载了 jenkins.war 并尝试在 Windows 7 和 10 上使用 java -jar jenkins.war 运行它,但它不起作用。正在运行java版本,

      java version "1.8.0_144"
      Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
      Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
      

      适合我的解决方案,
      1. 从您的系统中卸载所有版本的 java 和更新
      2. 清理临时文件和注册表(我用的是CCLeaner)
      3.从Oracle下载最新版本
      4. 如果此解决方案对您有用,请安装并喜欢此评论!

      此外,如果可能,请尝试删除 .jenkins 目录

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-30
        • 1970-01-01
        相关资源
        最近更新 更多