(已解决)使用jstl标签库时候出现Message java.lang.ClassNotFoundException: org.apache.jsp.index_jsp
问题详细信息:
HTTP Status 500 – Internal Server Error
Type Exception Report
Message java.lang.ClassNotFoundException: org.apache.jsp.index_jsp
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.index_jsp
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:197)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:413)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Root Cause
java.lang.ClassNotFoundException: org.apache.jsp.index_jsp
java.net.URLClassLoader.findClass(URLClassLoader.java:382)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:129)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:60)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:192)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:413)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
原因一:没有导入jstl相关包
导入包有两种版本的(jstl 1.0、1.1版本和jstl 1.2版本),分别如下:
1 、jstl 1.0、1.1系列版本;此系列的下载如下包进行导入到工程lib中
jstl.jar
standard.jar
对应下载地址:(http://archive.apache.org/dist/jakarta/taglibs/standard/)
2、jstl1.2系列版本;此系列的下载如下包进行导入到工程lib中
taglibs-standard-impl-1.2.5.jar
taglibs-standard-spec-1.2.5.jar
taglibs-standard-jstlel-1.2.5.jar
xalan-2.7.1.jar
serializer-2.7.1.jar
对应下载地址:(https://archive.apache.org/dist/tomcat/taglibs/)
最后jsp对应页面导入对应标签即可
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
原因二:相关包重复问题
由于tomcat自身已经自带了jsp.jar包和servlet.jar包,查看工程lib包中是否 有javax.servlet.jsp.jar
包,找到删除即可。
原因三:版本冲突问题
首先看下图所示jsp,servlet,jdk,tomcat等相关的版本对应关系
通过图发现,假如你用的servlet和jsp是最新的版本,而jdk使用的是jdk7,可能就会出现冲突,这时候把jdk调整为jdk8;同理tomcat也会出现类似的版本问题,比如修改tomcat5为tomcat7+等。
原因四(重点):相关jstl的jar包没有加入到tomcat的lib中
当我们发现以上原因都不起作用的时候,我们把对应的jstl包在工程lib目录中导入后,同时在tomcat的lib目录中加入此包即可。
然后再次打开jsp页面,成功,解决!!!
原因五:maven项目下JSTL表达式出现如此问题,则可能为pom.xml中dependency的问题,在pom.xml中加入如下内容
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>javax.servlet.jsp.jstl</artifactId>
<version>1.2.4</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>javax.servlet.jsp.jstl-api</artifactId>
<version>1.2.1</version>
</dependency>
加入该内容后,对应的JSTL的jar包也就不要加入。
版权声明:本文为qq_27637361原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。