找不到“http://java.sun.com/jsp/jstl/core”的标签库描述符

新手上路,请多包涵

我在我的 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 许可协议

阅读 1.6k
2 个回答

找不到“http://java.sun.com/jsp/jstl/core”的标签库描述符

根据 您之前的一个问题,您正在使用 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,请使用以下坐标:

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

您还应该确保您的 web.xml 被声明 至少 符合 Servlet 2.4,因此不符合 Servlet 2.3 或更早版本。否则 JSTL 标记内的 EL 表达式将依次失效。选择与您的目标容器匹配的最高版本,并确保您的 <!DOCTYPE> 中的任何位置都没有 web.xml 。这是一个与 Servlet 3.0 (Tomcat 7) 兼容的示例:

 <?xml version="1.0" encoding="UTF-8"?>
<web-app
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">

    <!-- Config here. -->

</web-app>

###也可以看看:

原文由 BalusC 发布,翻译遵循 CC BY-SA 4.0 许可协议

我有同样的问题,尽管有 jstl

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

我还必须添加“标准”:

 <dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
</dependency>

另外,如前一篇文章所述:

原文由 Nenad Bulatović 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题