簡體   English   中英

Tomcat從7.0.59升級到8.5.51后JSP編譯異常

[英]JSP compilation exception after Tomcat upgrade to 8.5.51 from 7.0.59

我已經升級Tomcat的版本以8.5.517.0.59 升級后,我在嘗試訪問 index.jsp 頁面時遇到異常。

SEVERE: Servlet.service() for servlet [jsp] threw exception
org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: [24] in the generated java file:
[/home/application_path/work/org/apache/jsp/index_005f_jsp.java]
The type index_005f_jsp must implement the inherited abstract method JspSourceImports.getPackageImports()

An error occurred at line: [24] in the generated java file:
[/home/application_path/work/org/apache/jsp/index_005f_jsp.java]
The type index_005f_jsp must implement the inherited abstract method JspSourceImports.getClassImports()

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

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

An error occurred at line: [43] in the generated java file:
[/home/application_path/work/org/apache/jsp/index_005f_jsp.java]
_jspx_imports_packages cannot be resolved to a variable

An error occurred at line: [44] in the generated java file:
[/home/application_path/work/org/apache/jsp/index_005f_jsp.java]
_jspx_imports_packages cannot be resolved

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

Stacktrace:
        at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102)
        at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:212)
        at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:552)
        at org.apache.jasper.compiler.Compiler.compile(Compiler.java:381)
        at org.apache.jasper.compiler.Compiler.compile(Compiler.java:351)
        at org.apache.jasper.compiler.Compiler.compile(Compiler.java:335)
        at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:597)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:399)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728)
        at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:470)
        at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:395)
        at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:316)
        at ActiveServerPkg.ActiveServer.doPost2(ActiveServer.java:1004)
        at ActiveServerPkg.ActiveServer.doPost(ActiveServer.java:253)
        at ActiveServerPkg.ActiveServer.doGet(ActiveServer.java:245)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:609)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:818)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1623)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:748)

生成的servlet文件的區別

使用 tomcat 7.0.59

public final class index_005f_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent {

使用 tomcat 8.5.51

public final class index_005f_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent,
                 org.apache.jasper.runtime.JspSourceImports {

JspSourceImports接口已添加到工具列表中

我認為這可能是由於版本中的代碼/語法向后兼容性發生了變化,所以用簡單的Hello World消息替換了我的 index.jsp 內容,但仍然面臨同樣的問題。

由於組織政策問題,無法共享原始 JSP 內容,修改后的 jsp 如下所示,我可以在其中重現此問題。

<html>
<body>
    <h2>Hello World</h2>
</body>
</html>

使用的 java 版本是openjdk version 1.8.0_212

Tomcat 和 Java 版本詳細信息

來自 tomcat lib 文件夾的罐子... 來自 tomcat lib 文件夾的罐子

我的 WEB-INF/lib 文件夾中可用的 jar 列表

activation.jar                                  jackson-annotations-2.10.2.ja   ribbon-2.7.17.jar             
antlr-complete-3.5.2.jar                        jackson-core-2.10.2.jar         ribbon-archaius-2.7.17.jar    
aopalliance-1.0.jar                             jackson-databind-2.10.2.jar     ribbon-core-2.7.17.jar        
apache.jar                                      jai_codec.jar                   ribbon-loadbalancer-2.7.17.jar
archaius-core-0.7.6.jar                         jai_core.jar                    ribbon-transport-2.7.17.jar
aspectj-maven-plugin-1.7.jar                    javassist-3.3.jar               security.jar
aspectjweaver-1.8.9.jar                         javax.batch-api-1.0.jar         servo-core-0.10.1.jar
avalon-framework-cvs-20020806.jar               javax.persistence-2.1.1.jar     servo-internal-0.10.1.jar
batik.jar                                       jboss-logging-3.3.0.Final.jar   slf4j-api-1.7.5.jar
bcprov-jdk16-145.jar                            jce1_2_2.jar                    slf4j-log4j12-1.6.6.jar
bsf-2.4.0.jar                                   jcert.jar                       smtp.jar
cglib-3.1.jar                                   jdbc.jar                        spring-aop-4.3.26.RELEASE.jar
commons-codec-1.10.jar                          jettison-1.3.7.jar              spring-aspects-4.3.26.RELEASE.jar
commons-collections-3.2.2.jar                   jnet.jar                        spring-batch-core-4.2.1.RELEASE.jar
commons-configuration-1.8.jar                   js.jar                          spring-batch-infrastructure-4.2.1.RELEASE.jar
commons-dbcp-1.3.jar                            jta-1.1.jar                     spring-beans-4.3.26.RELEASE.jar
commons-httpclient-3.1.SONATYPE.jar             local_policy.jar                spring-context-4.3.26.RELEASE.jar
commons-lang-2.4.jar                            log4j-1.2.17.jar                spring-context-support-4.3.26.RELEASE.jar
commons-logging-1.2.jar                         logback-classic-1.0.12.jar      spring-core-4.3.26.RELEASE.jar
commons-net-3.5.jar                             logback-core-1.0.12.jar         spring-expression-4.3.26.RELEASE.jar
commons-pool-1.5.4.jar                          mailapi.jar                     spring-jdbc-4.3.26.RELEASE.jar
cryptix-jce-api.jar                             mail.jar                        spring-orm-4.3.26.RELEASE.jar
cryptix-jce-compat.jar                          micrometer-core-1.1.5.jar       spring-oxm-4.3.26.RELEASE.jar
cryptix-jce-provider.jar                        mlibwrapper_jai.jar             spring-retry-1.1.2.RELEASE.jar
cryptix-message-api.jar                         mybatis-3.2.4.jar               spring-tx-4.3.26.RELEASE.jar
cryptix-openpgp-provider.jar                    mybatis-spring-1.2.2.jar        spring-web-4.3.26.RELEASE.jar
cryptix-pki-api.jar                             netflix-commons-util-0.1.1.jar  sunjce_provider.jar
dom4j-1.6.1.jar                                 netflix-statistics-0.1.1.jar    tag_gen.jar
fop.jar                                         ojdbc7.jar                      tomcat-jdbc-9.0.22.jar
guava-19.0.jar                                  ostermillerutils_1_07_00.jar    velocity-1.6.2.jar
hibernate-commons-annotations-4.0.4.Final.jar   poi-3.17.jar                    xalan200.jar
hibernate-core-4.3.10.Final.jar                 poi-ooxml-3.17.jar              xerces-2.4.0.jar
hibernate-ehcache-4.1.9.Final.jar               poi-ooxml-schemas-3.17.jar      xmlbeans-2.3.0.jar
hibernate-validator-4.3.0.Final.jar             pop3.jar                        xmlpull-1.1.3.1.jar
imap.jar                                        quartz-2.2.1.jar                XmlSchema-1.2.jar
j2ssh.jar                                       quartz-jobs-2.2.1.jar           xstream-1.4.11.1.jar

也清除了工作目錄,但沒有運氣:(

還嘗試了以下鏈接中的解決方案,但仍然無法正常工作。

使用 Tomcat 9 時出現 Jasper 異常

使用 Tomcat 8.0.20 時 JSP 編譯失敗。 適用於 8.0.11

在這種特殊情況下,應用程序的 WEB-INF/lib目錄中的庫(jar)之一導致了此問題,該 jar 是...

cryptix-jce-compat.jar

從 lib 文件夾中刪除cryptix-jce-compat.jar后,JSP 編譯開始使用最新的 tomcat 版本(8.5.51),因為它在較早的 tomcat 版本(7.0.59)中工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM