我刚开始使用tomcat并且运行良好,但是从昨天开始我遇到了麻烦。我也重新安装了它。我在其日志文件中收到的错误报告发布在下面....
块引用
2013-01-01 19:10:21 Commons Daemon procrun stderr initialized
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(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at sun.misc.Launcher$ExtClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
线程“main”中的异常
答案 0 :(得分:1)
实际上我将tomcat中的库复制到了jdk的ext文件夹中。
你不应该这样做。它会导致类加载灾难。您不应该移动/复制/更改servletcontainer自己的库。您应该取消它们,并且永远不要删除JRE / JDK /lib
或/lib/ext
文件夹中与Java SE无任何关联的任意JAR。清理那些文件夹。
在相关的说明中,即使您似乎没有这样做,也不应该将servletcontainer特定的JAR文件放在webapp的/WEB-INF/lib
文件夹中。
这是一个常见的启动程序错误,以避免JSP / Servlet API上的编译错误或“简化”编译而不会摆弄%CLASSPATH%
或-cp
/ -classpath
。如果您使用的是Eclipse / Netbeans之类的IDE,那么您实际上应该在IDE中注册服务器运行时,并将其与Web项目关联为“目标运行时”。如果您使用的是普通javac
,那么您实际上应该使用-cp
/ -classpath
参数来指定用于编译的特定于servletcontainer的JAR文件。要进一步抽象以避免重新输入整个类路径值,您应该将命令放在可重用的.bat
或.cmd
文件中,或者只是拥有像Ant,Ivy甚至是一个像样的构建工具像Eclipse / Netbeans这样的IDE。