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

use*_*206 44 java eclipse tomcat jstl

我把它包含在我的JSP页面的最顶层:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Run Code Online (Sandbox Code Playgroud)

我已将JSTL JAR文件放在WEB-INF/lib目录中.但是,JSP仍然无法解析taglib.我得到以下错误:

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

我正在使用Eclipse Juno,项目结构如下所示:

在此输入图像描述

Bal*_*usC 94

找不到" 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.就这样.您不需要提取它,也不需要在项目的构建路径中弄乱.

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

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

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

你还应该确保你的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>
Run Code Online (Sandbox Code Playgroud)

也可以看看:


nfe*_*ner 8

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

http://java.sun.com/jstl/core
Run Code Online (Sandbox Code Playgroud)

对于1.1(及更高版本),您需要使用:

http://java.sun.com/jsp/jstl/core
Run Code Online (Sandbox Code Playgroud)


Nen*_*vic 8

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

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

我不得不添加'标准':

<dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

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


EA0*_*906 5

如果您使用 Maven,您的 pom<dependencies>标签应如下所示:

<dependencies>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp.jstl</groupId>
        <artifactId>javax.servlet.jsp.jstl-api</artifactId>
        <version>1.2.1</version>
    </dependency>
    <dependency>
        <groupId>taglibs</groupId>
        <artifactId>standard</artifactId>
        <version>1.1.2</version>
    </dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

这个对我有用。