使用Tomcat 6的IntelliJ IDEA 12.1.4:无法为JSP加载类

时间:2013-09-12 09:05:20

标签: java tomcat intellij-idea tomcat6

我有一个具有以下目录结构的Web应用程序:

  my-app
    [...]
    resources
      login.jsp
    [...]
    web
      [...]
      WEB-INF
        web.xml

当我尝试在Tomcat6上运行应用程序时,出现以下错误:

org.apache.jasper.JasperException: org.apache.jasper.JasperException: Unable to load class for JSP
    org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:161)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:340)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
root cause

org.apache.jasper.JasperException: Unable to load class for JSP
    org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:630)
    org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:149)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:340)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
root cause

java.lang.ClassNotFoundException: org.apache.jsp.login_jsp
    java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    java.security.AccessController.doPrivileged(Native Method)
    java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:134)
    org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:66)
    org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:628)
    org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:149)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:340)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:723)

我阅读了BalusC对similar question的回答,他建议此错误可能是由 login.jsp 中的Java代码中的语法错误引起的。但是有问题的文件不包含任何Java代码。

如何解决此错误?

更新1:我在日志中找到以下消息:

SEVERE: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: /login.jsp(6,0) The absolute uri: 
http://java.sun.com/jsp/jstl/fmt cannot be resolved in either web.xml or the 
jar files deployed with this application
    at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
    at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
    at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:88)
    at org.apache.jasper.compiler.Parser.processIncludeDirective(Parser.java:300)
    at org.apache.jasper.compiler.Parser.parseIncludeDirective(Parser.java:333)
    at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:442)

1 个答案:

答案 0 :(得分:1)

我通过将 jstl-1.2.jar 文件复制到Tomcat的 lib 目录来修复错误。