我在centOS 5.5上运行Tomcat 5.5.23然后由于某种原因不得不重新安装。 安装后它将无法启动。检查catalina.out文件导致this错误。谷歌搜索了几个小时显示结果是将丢失的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中的所有内容都已正确设置。 任何帮助,将不胜感激。我发现的最接近的类似问题是this guy在Tomcat邮件列表上,但你可以看到它已经有几年了。
答案 0 :(得分:0)
要检查的第一件事是tomcat-util
/usr/share/tomcat5/server/lib
jar
我注意到你提到了/ var / lib / tomcat / server / lib,而catalina.out说CATALINA_HOME等同于/ usr / share / tomcat5这是更标准的方式。
如果这是CATALINA_HOME的设置,则需要确保在/usr/share/tomcat5
下正确部署服务器树。
你是安装为RPM还是只是从apache下载站点解开tarball`?
你是否用/usr/share/tomcat5/bin/startup.sh
开始tomcat?或者采用不太标准的程序?
最终你需要的是像
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脚本