引发这次问题的,主要是对服务器Tomcat版本进行了升级(Tomcat7最新版本7.0.96),而用原来的旧Tomcat跑是没有问题的
上图,前端错误页面:
org.apache.jasper.JasperException: Unable to compile class for JSP
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:675)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:395)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
......
顺便上一下后台日志:
九月 21, 2019 3:47:42 下午 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet [qc] in context with path [/qc] threw exception [Unable to compile class for JSP] with root cause
java.lang.IllegalArgumentException: Page directive: invalid value for import
at org.apache.jasper.compiler.Node$PageDirective.validateImport(Node.java:628)
at org.apache.jasper.compiler.Node$PageDirective.addImport(Node.java:609)
at org.apache.jasper.compiler.Parser.parsePageDirective(Parser.java:352)
at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:473)
at org.apache.jasper.compiler.Parser.parseFileDirectives(Parser.java:1773)
网上查了挺多,用了以下两种方法后解决:
1.jar包冲突
(注意,此处引用自:https://www.cnblogs.com/qiongmiaoer/p/3552708.html)
问题分析:
可能是你项目中的诸如:catalina.jar、jsp-api.jar、servlet-api.jar、javax.servlet.jar、javax.servlet.jsp.jar等包和应用服务器(JBoss/Tomcat等)中的包重复且比其版本低,应用服务器在启动时会优先加载项目中的包,这样就导致和应用服务器中的其它包不匹配。可把重复的包从项目中删除,或将应用服务器下的这些包拷贝到项目中,重启服务即可。
解决方案 :
在tomcat工程文件夹路径中,删除掉两个文件即可,尝试此种方法解决了问题。
删除WEB工程Lib目录中的jsp-api.jar、servlet-api.jar,重新启动程序
2.JSP页面编写的import不规范
如我这里就是以下代码引起的:
<%@ page language="java" contentType="text/html; charset=UTF-8"
import="com.linkcm.qc.syn.utils.DateUtil;"
pageEncoding="UTF-8"%>
没错,就仅仅只是 import="com.linkcm.qc.syn.utils.DateUtil;" 中,最后面多了一个“;”号,删除后页面恢复正常