【问题标题】:java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TagLibraryValidatorjava.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TagLibraryValidator
【发布时间】:2011-11-05 16:05:21
【问题描述】:

我按照this link 中的指南安装 JSTL,但在尝试启动 JSP 页面时出现以下错误:

java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TagLibraryValidator

taglib 声明是:

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

我在 Tomcat webapps 中的/WEB-INF/lib 下安装了 JSTL 1.1,并尝试在我的项目中执行相同的操作,但没有成功。我还尝试了 JSTL 的 1.2 版,但消息仍然相同。这是如何引起的,我该如何解决?

【问题讨论】:

    标签: jsp jstl


    【解决方案1】:

    javax.servlet.jsp.tagext.TagLibraryValidator 类是在 JSP 2.0 中引入的。因此,此错误可能有以下原因:

    • 您没有运行与 JSP 2.0 兼容的 serlvetcontainer。例如,Tomcat 4.x 或 5.0。您至少需要 Tomcat 5.5 或更高版本、6.0 甚至更好的 7.0。只是最新版本。

    • 您将/WEB-INF/lib 与任意下载的jsp-api.jarj2ee.jar 文件或任何包含JSP API 的文件混为一谈,这些文件源自完全不同的servletcontainer make/version,而后者实际上不符合JSP 2.0 .摆脱那些库。你不需要它们。如果您这样做是为了解决编译错误,那么您的做法是错误的。它们最终应该在编译时类路径中,而不是在运行时类路径中。另见How do I import the javax.servlet API in my Eclipse project?

    【讨论】:

      【解决方案2】:

      我遇到了类似的问题,我使用的是 Tomcat 10。我在使用 Apache NetBeans 12.3 IDE 时遇到了这个错误。

      我添加了以下库:

      1. jakarta.servlet.jsp.jstl-api-2.0.0.jar
      2. jakarta.servlet.jsp.jstl-2.0.0 (1).jar

      我的代码现在运行良好。 link to see where I added them

      【讨论】:

      • 这解决了我的问题,但 &lt;c:forEach&gt; 等标签不起作用。
      • 解决了我的问题,但在更新、插入、删除等更新数据库时不起作用
      【解决方案3】:

      我遇到了同样的问题。使用 WildFly 服务器最新版本。这解决了我同样的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-10-30
        • 2016-01-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多