异常堆栈跟踪
org.apache.jasper.JasperException: Unable to load class for JSP org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:599) org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:143) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:321) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) java.lang.ClassNotFoundException: org.apache.jsp.redirect_jsp java.net.URLClassLoader$1.run(Unknown Source) java.security.AccessController.doPrivileged(Native Method) java.net.URLClassLoader.findClass(Unknown Source) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:131) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:63) org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:597) org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:143) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:321) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259) javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
我的redirect.jsp文件内容
<%@page contentType="text/html" pageEncoding="UTF-8"%> <% response.sendRedirect("user/list.htm"); %>
在servlet容器的掩护下,JSP在执行之前先编译为Java类。
例外
java.lang.ClassNotFoundException: org.apache.jsp.redirect_jsp
表示redirect.jsp您的webcontent文件夹根目录中的文件无法编译,这通常意味着该文件在 scriptlet中 包含一些原始Java代码,<% %>其中包含语法错误。您需要解决这些语法错误,以便servlet容器可以编译那些JSP文件。但是,普遍的共识是, _scriptlet_是一种不好的做法。您应该考虑Java代码是否最好不属于由a Servlet或a 控制的完全有价值的Java类Filter。
redirect.jsp
<% %>
Servlet
Filter
另一个可能的原因是servlet容器的工作缓存被弄乱了。使用较差的IDE插件进行开发时可能会发生这种情况。您想清理工作缓存。例如,在Eclipse中,可以通过右键单击服务器并选择 Clean 来做到这一点。否则,必须通过删除所涉及的servlet容器的工作高速缓存中的所有内容来手动完成此操作。以Tomcat为例,这就是/work文件夹中的所有内容。
/work