一尘不染

无法为JSP加载类

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)

我的redirect.jsp文件内容

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

阅读 353

收藏
2020-06-08

共1个答案

一尘不染

在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

另一个可能的原因是servlet容器的工作缓存被弄乱了。使用较差的IDE插件进行开发时可能会发生这种情况。您想清理工作缓存。例如,在Eclipse中,可以通过右键单击服务器并选择
Clean
来做到这一点。否则,必须通过删除所涉及的servlet容器的工作高速缓存中的所有内容来手动完成此操作。以Tomcat为例,这就是/work文件夹中的所有内容。

2020-06-08