简体   繁体   中英

JSP compilation exception after Tomcat upgrade to 8.5.51 from 7.0.59

I have upgraded tomcat version to 8.5.51 from 7.0.59 . After this upgrade I am getting below exception when trying to access index.jsp page.

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)

Difference between generated servlet files

with tomcat 7.0.59

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

with 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 interface got added in implements list

I thought it might be due change in code/syntax backward compatibility in version so replaced my index.jsp content with simply Hello World message but still facing same issue.

Original JSP content can't be shared due to org policy issues, modified jsp look likes below where I am able to reproduce this issue.

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

java version used is openjdk version 1.8.0_212

Tomcat 和 Java 版本详细信息

Jars from tomcat lib folder... 来自 tomcat lib 文件夹的罐子

List of jars which are available in my WEB-INF/lib folder

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

Cleared work directory as well but no luck :(

Also tried solutions from below links but still not working.

Jasper Exception when using Tomcat 9

JSP compilation fails with Tomcat 8.0.20. Works with 8.0.11

In this particular case, one of the library(jar) from application's WEB-INF/lib directory was causing this issue and the jar is...

cryptix-jce-compat.jar

After removing cryptix-jce-compat.jar from lib folder, JSP compilation started working with latest tomcat version(8.5.51) as it was working earlier in older tomcat version(7.0.59).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM