使 Tomcat 编译 JSP 支持 Java 8
Tomcat 7,8 都能运行在 Java 8 上,但跑在 tomcat 上的 web app 的 JSP 页面代码里却不一定能使用 Java 8 语法,如果强行使用 Java 8 语法,IDE 可能不会报错,但 web app 运行后,可能出现类似这种报错:
An error occurred at line: 19 in the jsp file: /abc.jsp
'<>' operator is not allowed for source level below 1.7
为何?
下表是 tomcat 7/8 支持的源码版本和输出的代码版本:
compilerSourceVM - What JDK version are the source files compatible with? (Default value: 1.7)
compilerTargetVM - What JDK version are the generated files compatible with? (Default value: 1.7)
这两个参数可以在 $CATALINA_BASE/conf/web.xml
中修改,在 servlet org.apache.jasper.servlet.JspServlet
的配置项中添加
<init-param>
<param-name>compilerSourceVM</param-name>
<param-value>1.8</param-value>
</init-param>
<init-param>
<param-name>compilerTargetVM</param-name>
<param-value>1.8</param-value>
</init-param>
修改后,就可以在 JSP 页面中使用 Java 8 语法了。
修改这两个参数值,会有什么风险吗?暂未发现。
Ref:
- https://tomcat.apache.org/tomcat-8.0-doc/jasper-howto.html
- https://tomcat.apache.org/tomcat-7.0-doc/jasper-howto.html