解决Tomcat运行springboot打包war工程,出现: Unable to compile class for JSP 的问题

SpringBoot Web工程,在IDEA工具上测试运行良好,打包到Tomcat上运行时出现异常:无法编译JSP

        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) [catalina.jar:9.0.30]
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [catalina.jar:9.0.30]
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) [catalina.jar:9.0.
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) [catalina.jar:9.0.30]
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [catalina.jar:9.0.30]
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678) [catalina.jar:9
0]
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [catalina.jar:9.0.30]
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [catalina.jar:9.0.30]
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367) [tomcat-coyote.jar:9.0.30]
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-coyote.jar:9.0.3
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860) [tomcat-coyote.ja
0.30]
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1598) [tomcat-coyote.jar:9.
]
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-coyote.jar:9.0.30
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_73]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_73]
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:9.0.3
        at java.lang.Thread.run(Thread.java:745) [na:1.8.0_73]
Caused by: org.apache.jasper.JasperException: Unable to compile class for JSP
        at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:621) ~[tomcat-embed-jasper-9.0
jar:9.0.37]
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:400) ~[tomcat-embed-jasper-9.0
jar:9.0.37]
        ... 73 common frames omitted

问题原因:首先考虑到程序在IDEA工具上测试运行良好,说明程序本身是没有问题的;所以出现这种情况大概率是因为运行环境发生改变。

解决办法:
1.检查JDK版本是否与IDEA工具测试运行时一致
2.检查Tomcat版本是否与IDEA工具测试运行时一致

09-Sep-2020 16:35:56.050 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.服务器版本:     Apache
 Tomcat/9.0.30
09-Sep-2020 16:35:56.054 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器构建:            Dec 7
2019 16:42:04 UTC
09-Sep-2020 16:35:56.055 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器版本号(:9.0.30.0
09-Sep-2020 16:35:56.055 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Window
s 10
09-Sep-2020 16:35:56.059 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS.版本:               10.0
09-Sep-2020 16:35:56.059 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 架构:                  x86
09-Sep-2020 16:35:56.060 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java 环境变量:         C:\Pro
gram Files\Java\jdk1.8.0\jre
09-Sep-2020 16:35:56.060 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM 版本:              1.8.0_
73-b02
09-Sep-2020 16:35:56.061 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM.供应商:            Oracle
 Corporation
09-Sep-2020 16:35:56.062 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         G:\Tom
cat\apache-tomcat-9.0.30
09-Sep-2020 16:35:56.063 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         G:\Tom
cat\apache-tomcat-9.0.30

以上是Tomcat运行时的信息,检查发现JDK版本是1.8,与测试运行相符;但是Tomcat版本确有差异,IDEA中springboot项目默认是使用Tomcat - 9.0.37,而本地使用的是Tomcat - 9.0.30;虽然都是Tomcat9,但还是存在差异的。

唯一可能出现异常的原因找到后,果断重新下载了一个Tomcat-9.0-37版本,重新启动运行,结果异常解决,运行正常!

09-Sep-2020 17:07:23.527 信息 [main] org.apache.catalina.startup.HostConfig.deployWAR web应用程序存档文件[G:\Tom
he-tomcat-9.0.37\webapps\springbootpackagingwar.war]的部署已在[4,349]ms内完成
09-Sep-2020 17:07:23.528 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到
\Tomcat\apache-tomcat-9.0.37\webapps\docs]
09-Sep-2020 17:07:23.551 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[G:\T
ache-tomcat-9.0.37\webapps\docs]的部署已在[23]毫秒内完成
09-Sep-2020 17:07:23.552 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到
\Tomcat\apache-tomcat-9.0.37\webapps\examples]
09-Sep-2020 17:07:23.790 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[G:\T
ache-tomcat-9.0.37\webapps\examples]的部署已在[237]毫秒内完成
09-Sep-2020 17:07:23.790 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到
\Tomcat\apache-tomcat-9.0.37\webapps\host-manager]
09-Sep-2020 17:07:23.822 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[G:\T
ache-tomcat-9.0.37\webapps\host-manager]的部署已在[32]毫秒内完成
09-Sep-2020 17:07:23.822 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到
\Tomcat\apache-tomcat-9.0.37\webapps\manager]
09-Sep-2020 17:07:23.854 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[G:\T
ache-tomcat-9.0.37\webapps\manager]的部署已在[32]毫秒内完成
09-Sep-2020 17:07:23.854 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到
\Tomcat\apache-tomcat-9.0.37\webapps\ROOT]
09-Sep-2020 17:07:23.877 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[G:\T
ache-tomcat-9.0.37\webapps\ROOT]的部署已在[23]毫秒内完成
09-Sep-2020 17:07:23.884 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-8080"]
09-Sep-2020 17:07:23.894 信息 [main] org.apache.catalina.startup.Catalina.start [4765]毫秒后服务器启动

你可能感兴趣的:(SpringBoot,tomcat,spring,boot,web,app,jsp,jdk)