tomcat6にJSPをデプロイしようとしていますが、以下のエラーメッセージがブラウザ上に出力されてJSPがコンパイルできません。
org.apache.jasper.JasperException: JSPのクラスをコンパイルできません: JSPファイル: /index.jsp の中の19行目でエラーが発生しました '<>' operator is not allowed for source level below 1.7 16: <body> 17: <% 18: Collection<String> strs=null; 19: strs= new ArrayList<>();
'<>' operator is not allowed for source level below 1.7
というエラーメッセージが表示されることを考えると、この時使われているjdkは1.7で導入されたダイアモンド演算子の意味を理解した上でエラーを出力している、つまり1.7以上のjdkが使用されているには使用されているのだと解釈しています。
実際にいろいろと検証した結果、1.8が使われているようです。
ですので恐らく問題は、jdkのバージョンではなく、jdkに対して指定されているコンパイル時のソースコードバージョンの指定が1.6以下なのだろう、と思っています。
調べた限り、tomcatがコンパイルするときに使用するjdkに対しての、ソースコードバージョンの指定は以下で行います。
■やったこと
・/etc/tomcat6/web.xmlの変更(compilerSourceVMとcompilerTargetVM)
<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>
ですが、これだけでは足りないようで、まだ同様のエラーが出力されています。
他にどこか設定するべき箇所はあるでしょうか。
■その他にやってみたこと(主にjdkに1.8が使われるようにする設定)
・JAVA_HOME環境変数の設定
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk.x86_64
・その後念のためOSの再起動
■確認したこと
・Javaバージョンの確認
root# java -version openjdk version "1.8.0_181" OpenJDK Runtime Environment (build 1.8.0_181-b13) OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
・javacバージョンの確認
root# javac -version javac 1.8.0_181
・tomcatマネージャで表示される項目JVMのバージョンの確認
JVMバージョン 1.8.0_181-b13
これでもまだ同様のコンパイルエラーが出てコンパイルできない状態です。
JDK1.8が使われるようにするには、他にどのような設定が必要でしょうか。
それともそもそもエラーの意味の解釈が違うでしょうか。
■環境情報
OS:Red Hat Enterprise Linux Server release 6.4 (Santiago)
tomcat:Apache Tomcat/6.0.24
■追記
以下を追加設定しましたが、状況は変わりませんでした。
<init-param> <param-name>compiler</param-name> <param-value>/usr/bin/javac</param-value> </init-param>
※/usr/bin/javacは、/usr/lib/jvm/java-1.8.0-openjdk.x86_64/bin/javacのエイリアスです。
よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/28 03:54
2018/09/28 05:01