无法find“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仍然无法parsingtaglib。 我得到下面的错误:

无法find“ http://java.sun.com/jsp/jstl/core ”的标记库描述符

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

在这里输入图像描述

无法find“ 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的典型代码。 该版本需要在/WEB-INF/lib中包含必要的TLD文件的standard.jar 。 然而,在你的特殊情况下, /WEB-INF/lib显然缺less了standard.jar ,这正是taglib URI无法parsing的原因。

为了解决这个问题,你必须删除错误的JAR文件,下载jstl-1.2.jar并把它全部放在/WEB-INF/lib 。 就这样。 您不需要提取它,也不需要在项目的构buildpath中摆弄。

不要忘记删除那个松散的c.tld文件。 它绝对不属于那里。 这确实是在一些糟糕的教程或在互联网上的其他地方的答案指示。 这是一个重大的误解和错误configuration造成的神话。 永远不需要在类path中有一个松散的JSTL TLD文件,也不需要以前的JSTL版本。

如果你使用Maven,使用下面的坐标:

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

你也应该确保你的web.xml声明至less符合Servlet 2.4,因此不符合Servlet 2.3或更早的版本。 否则,JSTL标签内部的ELexpression式将无法工作。 select与您的目标容器匹配的最高版本,并确保您的web.xml任何位置都没有<!DOCTYPE> 。 这里有一个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> 

也可以看看:

URI取决于您使用的JSTL的版本。 对于版本1.0使用:

 http://java.sun.com/jstl/core 

和1.1(和更高版本),你需要使用:

 http://java.sun.com/jsp/jstl/core 

我有同样的问题,尽pipe有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> 

另外,正如前一篇文章中提到的:

  • 版本1.0使用: http : //java.sun.com/jstl/core
  • 为1.1(和更高版本)使用: http : //java.sun.com/jsp/jstl/core

如果你正在使用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> 

它适用于我。

那么,我已经阅读了这篇文章,似乎不足以解决这个问题。

在tomcat 8基于Spring的应用程序将无法正常工作。

这是解决scheme

步骤 1⇒在您的pom.xml中添加以下依赖项

 <!-- JSTL Support --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.1</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> 

第2步 ⇒在JSP页面中添加以下两条语句,确保在<%@ page%>标签中使用了isELIgnored =“false”属性

 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" isELIgnored="false" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 

第3步 ⇒删除web.xml或其他地方的所有其他configuration

步骤 4⇒清理Tomcat并重新启动Tomcat。

附注⇒实际上,JSTL只能在Tomcat 8上使用3.x Servlet规范。

 [http://www.kriblog.com/j2ee/jsp/jstl-with-spring-4-on-tomcat-8.html] 

添加Maven依赖关系:

 <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> <scope>compile</scope> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> <scope>compile</scope> </dependency> 

你也需要在web.xml中进行configuration。请参考下面的代码。

 <taglib> <taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri> <taglib-location>/WEB-INF/lib/c.tld</taglib-location> </taglib> 

请让我知道如果你仍然面临任何问题。

为了使其工作:

jstl标准 jar文件添加到您的库中。

希望它有助于.. 🙂