使用されているTomcatのバージョンによると、tomcatが提供するJSPエンジンは、特定のデフォルトバージョンのJavaを使用してJSPをコンパイルおよび実行します。
Tomcat7は1.6バージョンを使用します
compilerSourceVM-ソースファイルと互換性のあるJDKのバージョンは何ですか?(デフォルト値:1.6)
compilerTargetVM-生成されたファイルはどのJDKバージョンと互換性がありますか?(デフォルト値:1.6)
Tomcat8は1.7バージョンを使用します
compilerSourceVM-ソースファイルと互換性のあるJDKのバージョンは何ですか?(デフォルト値:1.7)
compilerTargetVM-生成されたファイルはどのJDKバージョンと互換性がありますか?(デフォルト値:1.7)
Tomcat9は1.8バージョンを使用します
compilerSourceVM-ソースファイルと互換性のあるJDKのバージョンは何ですか?(デフォルト値:1.8)
compilerTargetVM-生成されたファイルはどのJDKバージョンと互換性がありますか?(デフォルト値:1.8)
もちろん、デフォルト値が要件に一致しない場合は、使用するバージョンを変更できます。
org.apache.jasper.servlet.JspServlet
これを行うには、グローバルで宣言されたサーブレットの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>
...