从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所需的一切。