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

时间:2011-11-05 16:05:21

标签: jsp jstl

我按照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版本,但仍然是相同的消息。这是怎么造成的,我该如何解决?

3 个答案:

答案 0 :(得分:3)

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

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

  • 您使用任意下载的/WEB-INF/libjsp-api.jar文件或包含JSP API的任何内容混淆了j2ee.jar,这些文件来自完全不同的servletcontainer make / version实际上并不符合JSP 2.0。摆脱那些库。你不需要它们。如果你这样做是为了解决编译错误,那么你做错了。它们应该在编译时类路径中结束,而不是在运行时类路径中。另请参阅How do I import the javax.servlet API in my Eclipse project?

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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