刚下载Tomcat 7.0.26,解压缩它,运行startup.bat
文件,它失败了,并出现以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.apache.catalina.startup.Bootstrap.<clinit>(Bootstrap.java:54)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
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:323)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:336)
... 1 more
一位同事建议我尝试使用更旧/更稳定的Tomcat版本。他跑了6.0.35,所以我决定试试。
我用6.0.35做了同样的事情…同样的事情也发生在我身上…
这是怎么回事?!?!我在bin/tomcat-juli.jar
中看到LogFactory在那里(两个版本)。。。
编辑:
以下是几个环境变量的值:
- 类路径:
.;C:Users<myUser>Desktopjars;C:Program FilesJavajre6libextQTJava.zip
- JAVA_HOME:
C:Program FilesJavajdk1.6.0_25
这些似乎加不起来!?!如果我读对了,它不是说CLASSPATH认为我在使用jre6
,但Java Home设置为jdk1.6.0_25
吗?
您的系统中可能设置了一些环境变量,导致Tomcat无法运行。
检查:
- CATALINA_HOME
- CATALINA_BASE
- CATALINA_OPS(用于添加类路径)
- JAVA_OPTS(用于类路径添加)
可能性较小:
- LOGGING_CONFIG
- 日志管理器
如果设置了这些环境变量中的任何一个,请更正或取消设置它们。我的猜测是,CATALINA_HOME
被设置为指向您系统上不同版本的Tomcat。
我在2小时前下载了Tomcat 7.0.26,它运行良好。在类路径中的任何位置(路径变量、jre版本/lib等)都有一个旧版本的commons-logging.jar
我也遇到了同样的问题。我所做的只是将[apache tomcat]/lib目录中的所有jar文件和[apache tomcat]/bin中的所有jar文件复制到[jdk directory]/jre/lib/ext目录中。这应该能解决问题。