首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >找不到“http://java.sun.com/jsp/jstl/core”的标记库描述符

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

Stack Overflow用户
提问于 2012-11-08 09:10:15
回答 18查看 215K关注 0票数 62

我已经将其包含在JSP页面的最上面:

代码语言:javascript
运行
复制
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

我已经将JSTL文件放置在WEB-INF/lib目录中。但是,JSP仍然不能解析taglib。我得到以下错误:

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

我使用的是Eclipse,项目结构如下所示:

EN

回答 18

Stack Overflow用户

回答已采纳

发布于 2012-11-09 12:02:27

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

基于你之前的一个问题,您正在使用Tomcat 7,在这种情况下,您需要JSTL1.2。但是,您有一个jstl.jar文件,而JSTL1.2显然包含了类似于jstl-1.2.jar的版本号。唯一的文件名jstl.jar是JSTL1.0和1.1的典型文件名。此版本要求在standard.jar中附带一个/WEB-INF/lib,其中包含必要的TLD文件。但是,在您的特殊情况下,standard.jar显然在/WEB-INF/lib中缺失,这正是无法解决标签库URI的原因。

要解决这个问题,您必须删除错误的JAR文件,下载jstl-1.2.jar并将其全部放到/WEB-INF/lib中。就这样。您不需要提取它,也不需要篡改项目的构建路径。

不要忘记删除这个松散的c.tld文件。它绝对不属于那里。这确实是在互联网其他地方的一些拙劣的教程或答案中得到的指示。这是一个由重大误解和错误配置引起的神话。在类路径中从来不需要有一个松散的JSTL文件,在以前的JSTL版本中也是如此。

如果您使用的是Maven,请使用以下坐标:

代码语言:javascript
运行
复制
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

您还应该确保您的web.xml声明至少符合Servlet2.4,因此不是Servlet2.3或更高版本。否则,JSTL标记中的EL表达式就会失败。选择与目标容器匹配的最高版本,并确保在<!DOCTYPE>中任何地方都没有web.xml。下面是一个Servlet3.0 (Tomcat 7)兼容的示例:

代码语言:javascript
运行
复制
<?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>

###See还:

票数 124
EN

Stack Overflow用户

发布于 2017-04-18 19:05:57

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

代码语言:javascript
运行
复制
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

我还得加上“标准”:

代码语言:javascript
运行
复制
<dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
</dependency>

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

  • 对于1.0版使用:http://java.sun.com/jstl/core
  • 用于1.1 (及更高版本)使用:http://java.sun.com/jsp/jstl/core
票数 17
EN

Stack Overflow用户

发布于 2012-11-08 09:13:46

URI取决于您正在使用的JSTL版本。对于1.0版,请使用:

代码语言:javascript
运行
复制
http://java.sun.com/jstl/core

对于1.1 (及以后的版本),您需要使用:

代码语言:javascript
运行
复制
http://java.sun.com/jsp/jstl/core
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13285826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档