无法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>
也可以看看:
- 我们的JSTL wiki页面 (您可以通过将鼠标hover在jstl上并单击info链接到达)
- 如何安装JSTL? 绝对uri:http://java.sun.com/jstl/core无法parsing
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文件添加到您的库中。
希望它有助于.. 🙂