Tomcat 启动失败,出现 ClassNotFoundException

Tomcat failing to start with ClassNotFoundException

我正在使用 Tomcat v7.0 和 Eclipse IDE 作为 Web 应用程序。尝试启动服务器时,我得到以下 ClassNotFoundException

java.lang.NoClassDefFoundError: org/apache/tomcat/util/digester/Rule
 at java.lang.Class.getDeclaredConstructors0(Native Method)
 at java.lang.Class.privateGetDeclaredConstructors(Class.java:2585)
 at java.lang.Class.getConstructor0(Class.java:2885)
 at java.lang.Class.newInstance(Class.java:350)
 at org.apache.catalina.startup.Bootstrap.init(Bootstrap.java:239)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:426)
Caused by: java.lang.ClassNotFoundException: org.apache.tomcat.util.digester.Rule
 at java.net.URLClassLoader.run(URLClassLoader.java:366)
 at java.net.URLClassLoader.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 java.lang.ClassLoader.loadClass(ClassLoader.java:358)
 ... 6 more

在搜索时,我找到了包含上述 class 的 apache-tomcat-util 5.23 jar,但是在将 jar 添加到 Tomcat 的启动配置后,我得到了一系列其他错误。相同的服务器安装在不同的工作 space 中使用不同的 webapp 效果很好。这里有什么问题?

您已经破坏了您的安装,可能是在您找到 apache-tomcat-util-5.23.jar 之前,而且很可能是在将该 JAR 文件添加到您的安装之后。您添加的那个 JAR 来自 Tomcat 版本,该版本已有多年历史并且与您的新版本不兼容。

删除您现有的 Tomcat 安装(但如果您在其中放置任何您想要保留的内容,请保存 webapps/ 目录)并重新安装。

如果您仍然遇到该错误,请检查以确保您的 IDE 配置正确:Tomcat 随它需要启动的每个 JAR 一起提供,因此如果它无法启动,这是因为 IDE 的集成配置错误。

就我而言,唯一的问题是 Apache Tomcat 的版本,我使用的是 Apache 7.0,当我更改为 Apache 8.0 时,它将 运行 完全正常。