0

我在 centOS 5.5 上运行 Tomcat 5.5.23,然后由于某种原因不得不重新安装。安装后不会启动。检查 catalina.out 文件导致错误。谷歌搜索了几个小时显示结果是将丢失的 jar 文件复制到一个目录(/var/lib/tomcat5/server/lib)中,这解决了问题,但又创建了另一个;这次我收到以下错误:

Using CATALINA_BASE:   /usr/share/tomcat5
Using CATALINA_HOME:   /usr/share/tomcat5
Using CATALINA_TMPDIR: /usr/share/tomcat5/temp
Using JRE_HOME:       /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64
java.lang.NoClassDefFoundError: org/apache/tomcat/util/log/SystemLogHandler
        at java.lang.Class.getDeclaredConstructors0(Native Method)
        at java.lang.Class.privateGetDeclaredConstructors(Class.java:2406)
        at java.lang.Class.getConstructor0(Class.java:2716)
        at java.lang.Class.newInstance0(Class.java:343)
        at java.lang.Class.newInstance(Class.java:325)
        at org.apache.catalina.startup.Bootstrap.init(Bootstrap.java:225)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:410)
Caused by: java.lang.ClassNotFoundException: org.apache.tomcat.util.log.SystemLogHandler
        at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:264)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:332)
        ... 7 more

我一直在谷歌搜索几个小时,我怀疑这不是“将 jar 文件复制到目录问题”,而是设置环境变量问题,但问题是我不确定在哪里设置所述变量。虽然没有为系统定义 CLASSPATH 变量(我相信这是在启动脚本中创建的),但 tomcat5.conf 中的所有内容都设置正确。任何帮助,将不胜感激。我发现的最接近的类似问题是这个人在 Tomcat 邮件列表上的,但你可以看到它已经有几年历史了。

4

1 回答 1

0

首先要检查的是你tomcat-util下面有 jar/usr/share/tomcat5/server/lib

我注意到您提到 /var/lib/tomcat/server/lib 而 catalina.out 说 CATALINA_HOME 等同于 /usr/share/tomcat5 ,这是更标准的。

/usr/share/tomcat5如果这是 CATALINA_HOME 设置的内容,您需要确保服务器树已正确部署。

您是作为 RPM 安装的,还是只是从 apache 下载站点解压缩 tarball?

你用 Tomcat 启动/usr/share/tomcat5/bin/startup.sh吗?还是采用不那么标准的程序?

最后你需要的是像

java 
  -classpath /usr/share/tomcat5/bin/bootstrap.jar
  -Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS
  -Dcatalina.base="$CATALINA_BASE"
  -Dcatalina.home="$CATALINA_HOME"
  -Djava.io.tmpdir="$CATALINA_TMPDIR"
   org.apache.catalina.startup.Bootstrap

并且这些变量可能在 /etc/environment 中定义(假设 redhat/centos 在这与 debian 没有什么不同)或者只是一个包装 startup.sh 或 catalina.sh 的 shell 脚本

于 2011-02-19T14:56:26.643 回答