无法为JSP加载类

exception堆栈跟踪

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文件内容

   

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

例外

 java.lang.ClassNotFoundException: org.apache.jsp.redirect_jsp 

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

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

当磁盘空间不足时,可能会发生这种情况。 Tomcat无法创建类文件,但继续并不恰当地假设它成功,然后抱怨后者。

此exception的另一个原因可能是缺少写入权限。 如果root用户在linux机器上启动了tomcat,它将使用所有者root创建工作/目录。 如果您尝试使用具有较少权限的特殊用户启动tomcat,则会因此而无法编译JSP文件。 所以你可以尝试两种解决方案:

  1. 使用chown tomcat_user -R work/更改tomcat工作文件夹的所有权
  2. 使用rm -R work/以较低权限启动tomcat之前删除工作目录

我收到此错误是因为我在WAR的pom.xml中有一个JSP API依赖项:

  javax.servlet.jsp jsp-api 2.1 compile  

将其更改为固定它:

  javax.servlet.jsp jsp-api 2.1 provided  

一个假设这是由于在编译阶段存在重复的类。 没有BalusC解释它是一个我从未猜到的编译问题!

我也遇到了这个问题,这是由于库jar文件,如jetty-util-6.0.0rc0.jar,jasper-compiler-jdt-5.5.23.jar,jasperreports-3.0.0.jar。 我的回答可能不合适,因为现在我是初学者,但至少你可以尝试…谢谢你,

我在IntelliJ生成的Spring MVC模板Spring MVC hello world示例中遇到了类似的问题。 InternalResourceViewResolver无法解析Hello_JSP.java文件。 我不得不把它改成以下依赖

javax.servlet javax.servlet-api 3.1.0

希望它可以帮助某人。