根据使用的Tomcat版本,tomcat提供的JSP引擎使用特定的默认Java版本来编译和运行JSP。
Tomcat 7使用 1.6 版本
compilerSourceVM - 源文件与哪个 JDK 版本兼容?(默认值:1.6)
compilerTargetVM - 生成的文件与哪个 JDK 版本兼容?(默认值:1.6)
Tomcat 8使用 1.7 版本
compilerSourceVM - 源文件与哪个 JDK 版本兼容?(默认值:1.7)
compilerTargetVM - 生成的文件与哪个 JDK 版本兼容?(默认值:1.7)
Tomcat 9使用 1.8 版本
compilerSourceVM - 源文件与哪个 JDK 版本兼容?(默认值:1.8)
compilerTargetVM - 生成的文件与哪个 JDK 版本兼容?(默认值:1.8)
当然,如果默认值不符合您的要求,您可以更改使用的版本。
您可以通过修改
org.apache.jasper.servlet.JspServlet
在您的 global 中声明的 servlet的 init 参数来做到这一点$CATALINA_BASE/conf/web.xml
。
例如web.xml
,tomcat 8 发行版以这种方式定义了 JspServlet:
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
...
例如,要将1.8
版本指定为 JSP 文件的源和目标,您应该以这种方式更改它:
...
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<!-- added params -->
<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>
<!-- end added params -->
<load-on-startup>3</load-on-startup>
</servlet>
...