从Ant启动tomcat 7时的java.lang.NoClassDefFoundError
我的目标是使用Ant启动tomcat。 这是我的脚本:
脚本执行后,我收到此输出:
java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory at org.apache.catalina.startup.Bootstrap.(Bootstrap.java:60) Caused by: java.lang.ClassNotFoundException: org.apache.juli.logging.LogFactory at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 1 more Exception in thread "main" Java Result: 1
我检查过 : org.apache.juli.logging.LogFactory
类在tomcat-juli.jar
!
可能有什么不对?
对于一些未知的奇怪原因,即使我使用java -jar
命令从命令行启动它,tomcat也无法在我的系统中启动。
但是,我设法使用java -cp "bin\bootstrap.jar;bin\tomcat-juli.jar" org.apache.catalina.startup.Bootstrap
命令启动它,从tomcat.home
目录执行。
ant中的代码也是如此:
如果你想坚持使用catalina,正确的方法是添加\ setenv.bat,内容如下:
set CLASSPATH=D:\tomcat\apache-tomcat-7.0.42\bin\bootstrap.jar;D:\tomcat\apache-tomcat-7.0.42\bin\tomcat-juli.jar
我通过阅读catalina.bat发现了这一点。 有人可能想用适当的Tomcat doc更新它
查看tomcat的startup.sh
批处理文件或shell脚本。 除了bootstrap.jar
之外,它还有许多其他文件。 检查setclasspath.sh
。 它已经在类路径中设置了所有jar子。
其他更干净的方法是从ant调用startup.sh
脚本。 这将完成启动Tomcat Server所需的一切。