【发布时间】: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 文件。同样,我不确定这是否是问题所在,但绝对有可能。