我的目标是使用Ant启动tomcat。这是我的脚本:
<target name="tomcat-start">
<java jar="${tomcat.home}/bin/bootstrap.jar" fork="true" dir="${tomcat.home}">
<classpath>
<fileset dir="${tomcat.home}/bin">
<include name="bootstrap.jar"/>
<include name="tomcat-juli.jar"/>
</fileset>
</classpath>
<jvmarg value="-Dcatalina.home=${tomcat.home}"/>
</java>
</target>
脚本执行后,我收到此输出:
java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory
at org.apache.catalina.startup.Bootstrap.<clinit>(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
中!
可能出现什么问题?
答案 0 :(得分:6)
由于一些未知的奇怪原因,即使我使用java -jar
命令从命令行启动tomcat,tomcat也无法在我的系统中启动。
但是,我使用从java -cp "bin\bootstrap.jar;bin\tomcat-juli.jar" org.apache.catalina.startup.Bootstrap
目录执行的tomcat.home
命令设法启动。
ant中执行相同操作的代码:
<exec executable="java" dir="${tomcat.home}">
<arg line="-cp bin\bootstrap.jar;bin\tomcat-juli.jar"/>
<arg value="org.apache.catalina.startup.Bootstrap"/>
</exec>
答案 1 :(得分:3)
如果你想坚持使用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
更新它答案 2 :(得分:1)
查看tomcat的startup.sh
批处理文件或shell脚本。除了bootstrap.jar
之外,它还有许多其他文件。检查setclasspath.sh
。它已经在类路径中设置了所有罐子。
其他更干净方法是从ant调用startup.sh
脚本。这将完成启动Tomcat服务器所需的一切。