【问题标题】:Unable to load class for JSP无法为 JSP 加载类
【发布时间】:2011-05-28 23:02:16
【问题描述】:

异常堆栈跟踪

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"); %>

【问题讨论】:

    标签: java jsp


    【解决方案1】:

    我在 IntelliJ 生成的 spring 模板 Spring MVC hello world 示例中遇到了类似的问题。 InternalResourceViewResolver 不会解析 Hello_JSP.java 文件。我不得不将其更改为以下依赖项

    <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency>

    希望它可以帮助某人。

    【讨论】:

      【解决方案2】:

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

      例外

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

      意味着您的 webcontent 文件夹根目录中的 redirect.jsp 文件无法编译,这通常意味着它在 scriptlets &lt;% %&gt; 中包含一些原始 Java 代码,其中包含语法错误。您需要修复这些语法错误,以便 servletcontainer 可以编译这些 JSP 文件。然而,普遍的共识是 scriptletspoor practice。您应该考虑该 Java 代码是否更好地属于完全值得的 Java 类,由 ServletFilter 控制。

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

      【讨论】:

      • 刚刚更新了我的redirect.jsp代码..有什么需要做的改变
      • 有同样的错误,从 /work 目录中删除所有内容解决了我的问题。谢谢BalusC!!!
      • 我在使用 tomcat 6 服务器时遇到此错误。redirect.jsp 文件中没有脚本,我尝试从 /work 文件夹中删除所有内容。重新加载页面后,我可以看到在 /work 文件夹中重新创建了 redirect_jsp.java 文件,但我一直收到相同的错误。关于如何进一步调试的任何想法?
      • 这不是语法问题,jsp文件是从另一个工作的tomcat实例复制的,只有tomcat有问题
      • 原来磁盘已满,tomcat懒得正确报告
      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        当您用完磁盘空间时,这可能会在没有明显原因的情况下发生。 Tomcat 无法创建类文件,但继续执行并错误地假设它成功,然后抱怨后者。

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

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

            <dependency>
              <groupId>javax.servlet.jsp</groupId>
              <artifactId>jsp-api</artifactId>
              <version>2.1</version>
              <scope>compile</scope>
            </dependency>
            

            改成这样就解决了:

            <dependency>
              <groupId>javax.servlet.jsp</groupId>
              <artifactId>jsp-api</artifactId>
              <version>2.1</version>
              <scope>provided</scope>
            </dependency>
            

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

            【讨论】:

              猜你喜欢
              • 2017-03-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-05-12
              • 2017-12-13
              • 2016-01-31
              • 1970-01-01
              相关资源
              最近更新 更多