我刚开始使用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
线程“主”中的异常
实际上,我将库从tomcat复制到了jdk的ext文件夹中。
你不应该那样做。这会导致类加载灾难。您不应移动/复制/更改servlet容器自己的库。您应该取消触摸它们,并且切勿在JRE / JDK /lib或/lib/ext文件夹中丢弃与Java SE无关的任意JAR 。清理那些文件夹。
/lib
/lib/ext
值得一提的是,即使您似乎尚未这样做,也不应将servlet容器特定的JAR文件放在webapp的/WEB-INF/lib文件夹中。
/WEB-INF/lib
这是一个常见的入门错误,目的是规避JSP / Servlet API上的编译错误,或“简化”编译而无需弄乱%CLASSPATH%or -cp/ -classpath。如果您使用的是Eclipse / Netbeans之类的IDE,那么您实际上应该已经在IDE中注册了服务器运行时,并将其与Web项目关联为“目标运行时”。如果您使用的是plain javac,那么您实际上应该已经使用-cp/ -classpath参数来指定要编译的servletcontainer特定的JAR文件。为了进一步避免抽象化,以避免重新输入整个类路径值,您应该将命令放置在可重用.bat或.cmd文件中,或者使用像Ant,Ivy或Eclipse / Netbeans这样的IDE这样的构建工具。
%CLASSPATH%
-cp
-classpath
javac
.bat
.cmd