Hudson 无法在 tomcat5 中启动

Hudson 无法在 tomcat5 中启动

Hudson 是一个持续集成引擎,它作为 Java Servlet 在 tomcat 中运行。 https://hudson.dev.java.net/

我已在 CentOS 5.3 系统上成功安装了 Tomcat 5.5。我可以在端口 8080 上看到它并与其交互。

我可以上传 hudson.war 文件,该文件报告成功并且似乎将所有内容正确解压到 webapps 目录中。

但是,当我尝试从 tomcat web 应用程序管理器页面启动 hudson 应用程序时,它失败并报告“失败 - 无法启动上下文路径 /hudson 上的应用程序”。

平衡器、管理员和其他默认 Web 应用程序似乎已正确启动。

此系统启用了 SELinux,这在过去曾给我带来一些麻烦。不确定这是否与此案例有关。

tomcat 日志如下所示:

8-Jul-09 4:32:15 PM org.apache.catalina.core.ApplicationContext log
INFO: HTMLManager: start: Starting web application at '/hudson'
8-Jul-09 4:32:16 PM hudson.WebAppMain contextInitialized
SEVERE: Failed to initialize Hudson
java.lang.NoClassDefFoundError: hudson.model.Hudson
   at java.lang.Class.initializeClass(libgcj.so.7rh)
   at hudson.WebAppMain.installLogger(WebAppMain.java:227)
   at hudson.WebAppMain.contextInitialized(WebAppMain.java:112)
   at org.apache.catalina.core.StandardContext.listenerStart(catalina-5.5.23.jar.so)

   ... snip ...

   at java.lang.Class.initializeClass(libgcj.so.7rh)
   ...24 more
8-Jul-09 4:32:16 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class hudson.WebAppMain
java.lang.NoClassDefFoundError: hudson.model.Hudson
   at java.lang.Class.initializeClass(libgcj.so.7rh)
   at hudson.WebAppMain.installLogger(WebAppMain.java:227)
   at hudson.WebAppMain.contextInitialized(WebAppMain.java:112)
   at org.apache.catalina.core.StandardContext.listenerStart(catalina-5.5.23.jar.so)

   ... snip ... 

   at org.apache.catalina.loader.WebappClassLoader.loadClass(catalina-5.5.23.jar.so)
   at java.lang.Class.forName(libgcj.so.7rh)
   at java.lang.Class.initializeClass(libgcj.so.7rh)
   ...24 more
8-Jul-09 4:32:16 PM org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
8-Jul-09 4:32:16 PM org.apache.catalina.core.StandardContext start
SEVERE: Context [/hudson] startup failed due to previous errors
8-Jul-09 4:32:16 PM org.apache.catalina.core.StandardContext listenerStop
SEVERE: Exception sending context destroyed event to listener instance of class hudson.WebAppMain
java.lang.NoClassDefFoundError: hudson.model.Hudson
   at java.lang.Class.initializeClass(libgcj.so.7rh)
   at hudson.WebAppMain.contextDestroyed(WebAppMain.java:280)
   at org.apache.catalina.core.StandardContext.listenerStop(catalina-5.5.23.jar.so)

   ... snip ... 

   at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(tomcat-util-5.5.23.jar.so)
   at java.lang.Thread.run(libgcj.so.7rh)
8-Jul-09 4:32:16 PM org.apache.catalina.core.ApplicationContext log
INFO: HTMLManager: list: Listing contexts for virtual host 'localhost'

答案1

java.lang.NoClassDefFoundError: hudson.model.Hudson

看起来类加载器无法加载类,并且它可能可能是由于 的权限问题SELinux

您能否尝试运行嵌入式版本的 Hudson,只是为了确定它是否可以在您的系统上运行?

答案2

我无法通过配置解决这个问题,所以我向外星人学习,从轨道上用核武器摧毁了它。毕竟,这是唯一可以确保万无一失的方法。

清除我的包管理器(yum)安装的版本后,我去了 tomcat 网站并下载、安装和配置了他们的 Tomcat 5.5 核心和管理 Web 应用程序的二进制版本。

之后我遇到了一些小的权限问题,修改了他们保存在 $CATALINA_HOME/bin/jsvc-src/native/Tomcat5.sh 中的脚本以将 tomcat 作为守护进程运行,现在一切似乎运行良好。

我知道,这不是一个令人满意的答案,但我再也无法承受为此而烦恼了。

相关内容