【问题标题】:Jasper Exception when using Tomcat 9使用 Tomcat 9 时出现 Jasper 异常
【发布时间】:2018-01-05 14:47:21
【问题描述】:

我的任务是将网站从一个机构迁移到另一个机构。作为该过程的一部分,我们正在尝试更新站点使用的版本。

最初我被要求将 Java 8 与 Tomcat 5.5(在 Linux 上)一起使用,这导致了一些问题。从那以后,我尝试使用 Java 8 将 webapps 部署到 Tomcat 9。一些 webapps 似乎运行良好(并解决了我在使用 Tomcat5 时遇到的问题)。但是,当我转到 index.jsp 时,主应用程序会引发 JasperException - 部署到 Tomcat 5.5 的相同 Web 应用程序加载没有问题。

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: [15] in the generated java file: [/opt/tomcat9/work/Catalina/localhost/home/org/apache/jsp/index_jsp.java]
The type index_jsp must implement the inherited abstract method JspSourceImports.getPackageImports()

An error occurred at line: [15] in the generated java file: [/opt/tomcat9/work/Catalina/localhost/home/org/apache/jsp/index_jsp.java]
The type index_jsp must implement the inherited abstract method JspSourceImports.getClassImports()

An error occurred at line: [15] in the generated java file: [/opt/tomcat9/work/Catalina/localhost/home/org/apache/jsp/index_jsp.java]
The type index_jsp must implement the inherited abstract method JspSourceDependent.getDependants()

An error occurred at line: [22] in the generated java file: [/opt/tomcat9/work/Catalina/localhost/home/org/apache/jsp/index_jsp.java]
The type Map is not generic; it cannot be parameterized with arguments <String, Long>

An error occurred at line: [24] in the generated java file: [/opt/tomcat9/work/Catalina/localhost/home/org/apache/jsp/index_jsp.java]
The type Set is not generic; it cannot be parameterized with arguments <String>

An error occurred at line: [26] in the generated java file: [/opt/tomcat9/work/Catalina/localhost/home/org/apache/jsp/index_jsp.java]
The type Set is not generic; it cannot be parameterized with arguments <String>

An error occurred at line: [29] in the generated java file: [/opt/tomcat9/work/Catalina/localhost/home/org/apache/jsp/index_jsp.java]
_jspx_imports_packages cannot be resolved to a variable

An error occurred at line: [29] in the generated java file: [/opt/tomcat9/work/Catalina/localhost/home/org/apache/jsp/index_jsp.java]
The type HashSet is not generic; it cannot be parameterized with arguments <>

An error occurred at line: [30] in the generated java file: [/opt/tomcat9/work/Catalina/localhost/home/org/apache/jsp/index_jsp.java]
_jspx_imports_packages cannot be resolved

An error occurred at line: [31] in the generated java file: [/opt/tomcat9/work/Catalina/localhost/home/org/apache/jsp/index_jsp.java]
_jspx_imports_packages cannot be resolved

An error occurred at line: [32] in the generated java file: [/opt/tomcat9/work/Catalina/localhost/home/org/apache/jsp/index_jsp.java]
_jspx_imports_packages cannot be resolved

An error occurred at line: [33] in the generated java file: [/opt/tomcat9/work/Catalina/localhost/home/org/apache/jsp/index_jsp.java]
_jspx_imports_classes cannot be resolved to a variable

An error occurred at line: [39] in the generated java file: [/opt/tomcat9/work/Catalina/localhost/home/org/apache/jsp/index_jsp.java]
The type Map is not generic; it cannot be parameterized with arguments <String, Long>

An error occurred at line: [40] in the generated java file: [/opt/tomcat9/work/Catalina/localhost/home/org/apache/jsp/index_jsp.java]
_jspx_dependants cannot be resolved to a variable

An error occurred at line: [43] in the generated java file: [/opt/tomcat9/work/Catalina/localhost/home/org/apache/jsp/index_jsp.java]
The type Set is not generic; it cannot be parameterized with arguments <String>

An error occurred at line: [44] in the generated java file: [/opt/tomcat9/work/Catalina/localhost/home/org/apache/jsp/index_jsp.java]
_jspx_imports_packages cannot be resolved to a variable

An error occurred at line: [47] in the generated java file: [/opt/tomcat9/work/Catalina/localhost/home/org/apache/jsp/index_jsp.java]
The type Set is not generic; it cannot be parameterized with arguments <String>

An error occurred at line: [48] in the generated java file: [/opt/tomcat9/work/Catalina/localhost/home/org/apache/jsp/index_jsp.java]
_jspx_imports_classes cannot be resolved to a variable

Stacktrace:
    org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103)
    org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:213)
    org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:458)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:389)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:361)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:345)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:603)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    edu.purdue.cybercenter.ionomics.servlet.PiiMS.doGet(PiiMS.java:83)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

我发现的大多数类似问题都表明这与 jar 文件有关,并且可能与某种冲突有关。但是,tomcat 9 的 lib 结构与 tomcat5 不同,我不确定哪些 jar 可能会导致这种情况。我还尝试将 index.jsp 更改为更简单的 (HelloWorld) 形式 - 删除任何代码,并引发相同的异常。

有没有人遇到过类似的问题和/或有什么建议?

谢谢。

【问题讨论】:

  • 您是否将 Tomcat 5 时代安装中的任何“生成”文件复制到 Tomcat 8/8/5/9 安装中?具体来说,从您的 .jsp 文件构建的任何 .java 文件?这些生成的文件不能在 Tomcat 版本之间移植(有时甚至是同一版本中的点发布)。如果停止 Tomcat,完全删除 work 目录并重新启动 Tomcat,是否可以解决任何问题?
  • 不应再将任何东西部署到 Tomcat 5 上。 Tomcat 7 是当今任何人都可以使用的最低合理版本。如果可能的话,Tomcat 8.5 将是最好的选择。
  • 感谢克里斯托弗的关注和提示。我没有在tomcat5和tomcat9之间复制任何文件。我也试过删除工作目录并重新启动没有解决问题的tomcat
  • 抱歉,您遇到了问题。由于这可能是一个旷日持久的调查/讨论,我是否可以建议您加入Tomcat users' mailing 列表并在那里重新发布您的问题? SO 可能不是您在这种情况下获得帮助的正确论坛。

标签: java jsp tomcat exception


【解决方案1】:

在这种特殊情况下,问题似乎在于应用程序的 WEB-INF/lib 目录中的许多库确实需要删除,包括:

  • rt.jar
  • servlet-api.jar

我正在回答这个问题建议将其关闭,因为这是一个“简单的错误”,但一些读者可能会发现查看实际的解决方案很有用。

【讨论】:

  • 具体来说是 rt.jar 导致了问题。
猜你喜欢
  • 2011-01-09
  • 1970-01-01
  • 1970-01-01
  • 2018-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多