Sun JSTL taglib声明失败,显示“无法find标记库描述符”

我正在使用一个JSP页面来打印一个值的数组。 我正在尝试使用JSTL <c:forEach>

 <c:forEach items="${objects}" var="object"> <td>${object.name} </td> </c:forEach> 

问题是我的JSTL taglib声明:

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

IDE在这一行显示一个错误

找不到标签库描述符。

许多论坛指向旧的Sun站点下载JSTL库。 现在,所有这些链接都指向Oracle主页,而不链接到JSTL二进制文件。 这使我相信有一个更新的方法来实现这一点。

要解决此问题:

  1. jstl jar应该在你的类path中。 如果您正在使用maven ,请使用此处提供的代码段在您的pom.xml添加一个依赖项到jstl。 如果您不使用maven ,请从这里下载jstl jar并将其部署到您的WEB-INF/lib

  2. 确保你在jsp的顶部有下面的taglib指令:

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

只需查看我们自己的JSTL wiki页面 ,了解正确的下载链接和清晰的安装说明。

把鼠标放在你自己提问的[jstl]标签上面,直到出现一个黑框,然后点击信息链接。

在这里输入图像说明

然后向下滚动到JSTL版本信息,直到findJSTL 1.2(或1.2.1)的下载链接。

在这里输入图像说明

最后只需将这个文件放在webapp的/WEB-INF/lib

在这里输入图像说明

这样taglib声明不能再给出任何错误, JSTL标签和函数应该可以正常工作。

我只想分享我的经验。 我有关于jstl使用maven的同样的问题。 我解决了它通过添加两个依赖项。

  <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> 

您可以下载Apache Standard Taglib并将jar包含在您的项目中。

这是不使用maven的人的一个修补程序。 您还需要将standard.jar添加到lib文件夹以使核心标记库正常工作。 适用于jstl 1.1版。

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

如果您使用Tomcat服务器,我build议您将JSTL .jar文件放到Tomcat的lib文件夹中。 通过这样做,您将可以自动访问所有Web项目中的JSTL(当然,在.jsp文件中使用taglib声明)。

我使用Eclipse IDE的maven项目得到了这个问题。 我在项目的构buildpath中更改了“订单和导出”,首先将Maven依赖关系和错误消失。 我想这是因为Eclipse加载Maven库之前最初构build我的应用程序源。

我遇到了同样的问题 在这里输入图像说明 Spring Tool Suite 3.2,当把它添加到依赖列表中时,手动将jstl的版本更改为1.2(从1.1.2开始),并且错误消失了。