java - 使用 Tomcat 9 时出现 Jasper 异常

标签 java jsp tomcat exception

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

最初我被要求使用 Java 8 和 Tomcat 5.5(在 Linux 上),这导致了问题。从那以后,我尝试使用 Java 8 将 Web 应用程序部署到 Tomcat 9。一些 Web 应用程序似乎运行良好(并解决了我在使用 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) 形式 - 删除任何代码,并抛出相同的异常。

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

谢谢。

最佳答案

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

  • rt.jar
  • servlet-api.jar

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

关于java - 使用 Tomcat 9 时出现 Jasper 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48115899/

相关文章:

java - REST Web 服务 Java-Tomcat 错误

java - 将不同的 url 映射到 Tomcat 中的同一个 Web 应用程序

java - tomcat8 - 主 java HttpServlet 工作,但 ServletContextListener 无法访问 mysql 数据库

java - 为什么你可以抛出一个未发生的异常但不捕获它

java - Lucene 查询结果作为另一个 Lucene 语句的条件

java - 无法在struts2中的modelDreiven拦截器中将字符串设置为Int

java - 表格宽度太大

java - 在测试应用程序之前初始化 Spring Boot 测试 bean

java - 还有其他方法可以从 JSP 中的 bean 获取属性吗?

java - 使用tomcat部署后如何调试maven应用程序?