java.lang.IllegalStateException: No Java compiler available for configuration options compilerClassName: [null] and comp
iler: [null]
at org.apache.jasper.JspCompilationContext.createCompiler(JspCompilationContext.java:231)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:578)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:363)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:716)
遇到上面springboot转发jsp时这个问题。可能是为spring-boot提供jsp支持的依赖tomcat-embed-jasper.jar及其依赖的包坏了。
我遇到原因是下载tomcat-embed-jasper依赖包过程中中断,导致ecj.jar下载不完全,坏包了。
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!--tomcat-embed-jasper的依赖包-->
<groupId>org.eclipse.jdt</groupId>
<artifactId>ecj</artifactId>
<version>3.12.3</version>
解决方法,从本地maven库中找到相关包并删除,重新下载。至于它的依赖包可以从pom的Dependency Hierarchy中查找。