我在我的 JSP 页面的最顶部包含了这个:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
我已经将 JSTL JAR 文件放在了 WEB-INF/lib
目录中。但是,JSP 仍然无法解析 taglib。我收到以下错误:
找不到“ http://java.sun.com/jsp/jstl/core ”的标签库描述符
我正在使用 Eclipse Juno,项目结构如下所示:
原文由 user962206 发布,翻译遵循 CC BY-SA 4.0 许可协议
根据 您之前的一个问题,您正在使用 Tomcat 7。在这种情况下,您需要 JSTL 1.2。但是,您有一个
jstl.jar
文件,而 JSTL 1.2 清楚地包含了版本号,如下所示jstl-1.2.jar
。唯一的文件名jstl.jar
是 JSTL 1.0 和 1.1 的典型名称。此版本需要standard.jar
以及/WEB-INF/lib
包含必要的 TLD 文件。但是,在您的特定情况下,standard.jar
中明显缺少/WEB-INF/lib
这正是无法解析 taglib URI 的原因。要解决此问题,您必须删除错误的 JAR 文件,下载 jstl-1.2.jar 并将其全部放入
/WEB-INF/lib
中。就这样。您不需要提取它,也不需要摆弄项目的 Build Path 。不要忘记删除那个松散的
c.tld
文件。它绝对不属于那里。这确实在互联网其他地方的一些糟糕的教程或答案中得到了指导。这是一个由重大误解和错误配置造成的神话。永远不需要在类路径中有一个松散的 JSTL TLD 文件,在以前的 JSTL 版本中也不需要。如果您使用的是 Maven,请使用以下坐标:
您还应该确保您的
web.xml
被声明 至少 符合 Servlet 2.4,因此不符合 Servlet 2.3 或更早版本。否则 JSTL 标记内的 EL 表达式将依次失效。选择与您的目标容器匹配的最高版本,并确保您的<!DOCTYPE>
中的任何位置都没有web.xml
。这是一个与 Servlet 3.0 (Tomcat 7) 兼容的示例:###也可以看看: