根据使用的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 servlet 声明
在您的全球$CATALINA_BASE/conf/web.xml。
例如tomcat 8发行版的web.xml就是这样定义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>
...