无法为JSP加载类

the*_*ava 14 java jsp

异常堆栈跟踪

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)
Run Code Online (Sandbox Code Playgroud)

我的redirect.jsp文件内容

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<% response.sendRedirect("user/list.htm"); %>
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 36

在servletcontainer的封面下,JSP在被执行之前被编译为Java类.

例外

java.lang.ClassNotFoundException: org.apache.jsp.redirect_jsp
Run Code Online (Sandbox Code Playgroud)

表示redirect.jspwebcontent文件夹根目录中的文件无法编译,这反过来通常意味着它包含一些包含语法错误的scriptlet中的 原始Java代码<% %>.您需要修复这些语法错误,以便servletcontainer可以编译这些JSP文件.然而,一般的共识是小脚本是一种糟糕的做法.您应该考虑Java代码是否更好地属于由a Servlet或a 控制的完全Java类Filter.

另一个可能的原因是servletcontainer的工作缓存搞砸了.使用糟糕的IDE插件进行开发时可能会发生这种情况.您想清理工作缓存.在Eclipse中,您可以通过右键单击服务器并选择Clean来实现.否则,必须通过删除相关servletcontainer的工作缓存中的所有内容来手动完成.在例如Tomcat的情况下,那就是/work文件夹中的所有内容.