【问题标题】:Tomcat failing to start with ClassNotFoundExceptionTomcat 无法以 ClassNotFoundException 启动
【发布时间】:2026-01-17 07:20:03
【问题描述】:

我正在使用 Tomcat v7.0 和用于 Web 应用程序的 Eclipse IDE。尝试启动服务器时,我得到以下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$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 java.lang.ClassLoader.loadClass(ClassLoader.java:358)
 ... 6 more

在搜索时,我找到了包含上述类的 apache-tomcat-util 5.23 jar,但是在将 jar 添加到 Tomcat 的启动配置后,我得到了一系列其他错误。相同的服务器安装在具有不同 web 应用程序的不同工作空间中运行良好。这里有什么问题?

【问题讨论】:

    标签: eclipse tomcat tomcat7


    【解决方案1】:

    就我而言,唯一的问题是我使用的 Apache Tomcat 版本是 Apache 7.0,当我更改为 Apache 8.0 时,它会运行得非常好。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 我最终重新安装了 Tomcat 并且它成功了。也许,正如你所建议的那样,我的安装可能已经被破坏了。