使用雄猫 9 时的碧玉异常



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

最初,我被要求将Java 8与Tomcat 5.5(在Linux上)一起使用,这导致了问题。 从那以后,我尝试使用Java 8将Web应用程序部署到Tomcat 9。 一些网络应用程序似乎运行良好(并解决了我在使用 Tomcat5 时遇到的问题)。 但是,当我转到索引时,主应用程序会抛出 JasperException.jsp - 部署到 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 不同,我不确定哪些罐子可能导致这种情况。 我还尝试将索引.jsp更改为更简单的(HelloWorld)形式 - 删除任何代码,并抛出相同的异常。

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

谢谢。

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

  • rt.jar
  • servlet-api.jar

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

最新更新