我已将其包含在JSP页面的最顶层:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
我已将JSTL JAR文件放在WEB-INF/lib
目录中。但是,JSP仍然无法解析taglib。我收到以下错误:
的标记库描述符
我正在使用Eclipse Juno,项目结构如下所示:
答案 0 :(得分:91)
的标记库描述符
基于one of your previous questions你正在使用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>
您还应该确保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>
答案 1 :(得分:8)
URI取决于您使用的JSTL版本。对于1.0版,请使用:
http://java.sun.com/jstl/core
和1.1(及更高版本),您需要使用:
http://java.sun.com/jsp/jstl/core
答案 2 :(得分:6)
我有同样的问题,尽管有jstl
public class Parent {
public class someMethod(){
if( this instanceof Child1){
((Child1)this).someAdditionalMethod();
}
}
}
public class Child1 extends Parent{
public class someAdditionalMethod(){
}
}
我还必须添加'标准':
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
另外,如前一篇文章所述:
答案 3 :(得分:1)
如果你使用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>
它对我有用。
答案 4 :(得分:1)
<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>
答案 5 :(得分:1)
下载jstl-1.2.jar而不是jstl.jar解决了问题
答案 6 :(得分:0)
只需下载 javax.servlet.jsp.jstl.jar ,如果您只是开发动态网络应用程序,请添加到您的构建路径和WEB-INF/lib
。
使用maven开发动态Web应用程序时,请在pom文件中添加 javax.servlet.jsp.jstl 依赖项。
由于
nirmalrajsanjeev
答案 7 :(得分:0)
我发现有时即使有正确的依赖项,Eclipse 仍然会引发错误。以下是我用来进行 Eclipse 更新的方法:
方法一:复制粘贴jsp。
error happens for jsp in deeper layer
我也发现一个奇怪的情况,当同一个jsp在我的目录更深的时候,它的taglibs找不到了。但是,当它在 /webapp/ 下时就没有问题了。
我试过maven clean、maven build、project clean,都不能解决问题。
我通过删除有错误的jsp来解决它可以再次将正确的jsp从外部文件夹复制到内部文件夹。然后可以识别标签库。
jsp error resolved after copy paste jsp in outer folder
因此,我认为这可能是 Eclipse 本身的错误。
我的依赖就像
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<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>
方法二:修改jstl版本再改回来
尝试更改jstl的版本,然后maven clean和maven update,然后改回版本并再次maven clean。
答案 8 :(得分:0)
即使下载了jst库的1.2.5版(here),我仍然收到相同的错误消息(Eclipse Enterprise 2020-06,Tomcat 8.5,动态Web项目),并将其放入“ WEB”中。 -INF / lib”文件夹,并将<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
添加到jsp文件的顶部。
使用1.2版(here)对其进行修复。
答案 9 :(得分:0)
这是使用JSTL时非常常见的错误。
要简单地解决此错误 :-
您会发现错误已经消失!
希望这会有所帮助。
答案 10 :(得分:0)
这同样有效:
<dependency>
<scope>compile</scope>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
因此使用了jstl 1.2而不是standard.jar以及jstl-api 1.2
答案 11 :(得分:0)
确保构建路径中存在以下两个jar:
Maven依赖关系是:
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>$1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency
答案 12 :(得分:0)
添加maven依赖项:
bus.$on('update', function (id) {
// ...
})
答案 13 :(得分:0)
使其有效:
将 jstl 和标准 jar文件添加到您的库中。
希望它有所帮助.. :)
答案 14 :(得分:0)
好吧,我已经阅读过这篇文章,似乎还不足以解决这个问题。
在tomcat 8上基于Spring的应用程序将无法正常工作。
这是解决方案
第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页面中添加以下两个语句,确保使用isELIgnored =&#34; false&#34; &lt;%@ page%&gt;中的属性标签
<%@ 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或其他任何地方删除您迄今为止所做的所有其他配置:)
第4步⇒清理Tomcat并重启Tomcat。
备注⇒实际上,JSTL仅适用于Tomcat 8上的3.x Servlet规范。
[http://www.kriblog.com/j2ee/jsp/jstl-with-spring-4-on-tomcat-8.html]
答案 15 :(得分:0)
你也需要在web.xml中配置它。请参考下面的代码。
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/lib/c.tld</taglib-location>
</taglib>
如果您仍然遇到任何问题,请告诉我。
答案 16 :(得分:-1)
对我有用的东西(我在Eclipse 2019中使用Java 8和Tomcat 9):
pom.xml
<!-- jstl -->
<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>
.jsp文件
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>