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

use*_*152 4 jsp jstl

我按照此链接中的指南安装 JSTL,但当我尝试启动 JSP 页面时出现以下错误:

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

标签库声明是:

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Run Code Online (Sandbox Code Playgroud)

我在 Tomcat webapps 下安装了 JSTL 1.1/WEB-INF/lib并尝试在我的项目中执行相同的操作,但它不起作用。我也尝试了 JSTL 1.2 版,但仍然出现相同的消息。这是如何引起的以及如何解决?

小智 15

我遇到了类似的问题,我使用的是 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

我的代码现在运行良好。 链接查看我添加它们的位置


Bal*_*usC 7

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。摆脱那些图书馆。你不需要它们。如果您这样做是为了解决编译错误,那么您的做法是错误的。它们应该最终出现在编译时类路径中,而不是运行时类路径中。另请参阅如何在 Eclipse 项目中导入 javax.servlet API?