JSTL error javax/servlet/jsp/jstl/core/LoopTag error when using c:forEach tomcat ver7.0

妖精的绣舞 提交于 2019-12-01 15:54:31

问题


Hi using
eclipse juno, dynamic web project
apache Tomcat v7.0 (which has its own jstl-1.2.1.jar) I get this error

javax.servlet.ServletException: java.lang.NoClassDefFoundError:  javax/servlet/jsp/jstl/core/LoopTag
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:343)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

when I try running this jsp code

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

<c:forEach var="test" items="a,b,c">
${test}
</c:forEach>

</body>
</html>

it seams not to be seeing the javax.servlet.jsp.jstl.core.LoopTag class that is in the jar
I have read something about filters blocking javax.servlet files

any help would be greatly appreciated


ok I think I have found the solution javax.servlet.jsp.jstl-1.2.1.jar
does not contain the javax.servlet.jsp.jstl.core classes

jstl-1.2.jar needs to be added as well


回答1:


javax.servlet.jsp.jstl-1.2.1.jar doesn't contain the javax.servlet.jsp.jstl.core classes. Be sure to add jstl-1.2.jar as well.




回答2:


If you are using maven, add

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

to your pom.xml




回答3:


If you want to use forEach you should add two libraries to WEB-INF/lib of your project: Impl: taglibs-standard-impl-1.2.5.jar Spec: taglibs-standard-spec-1.2.5.jar




回答4:


I imported "taglibs-standard-impl-1.2.5.jar" I downloaded from http://tomcat.apache.org/download-taglibs.cgi and I encountered the same error. I tried importing "jstl-1.2.jar" as Limited Atonement suggested before and it worked. So I compared those two jars:

  • "jstl-1.2.jar" contains 3 folders: "javax", "META-INF" and "org".
  • "taglibs-standard-impl-1.2.5.jar" contains only 2 folders: "META-INF" and "org".

So I tried swch's suggestion. I removed jstl-1.2.jar and importing both "taglibs-standard-spec-1.2.5.jar" and "taglibs-standard-impl-1.2.5.jar".

This solved the issue, because the "spec" lib contains the "javax" folder which contains the required classes.



来源:https://stackoverflow.com/questions/12693969/jstl-error-javax-servlet-jsp-jstl-core-looptag-error-when-using-cforeach-tomcat

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!