事象 : EclipseでプロジェクトのJavaコンパイラーを設定したら怒られた。
Eclipseの[問題]タブに表示されたメッセージ
# 日本語の場合
Java コンパイラー・レベルが、インストールされている Java プロジェクト・ファセットのバージョンと一致しません。
# 英語の場合
Java compiler level does not match the version of the installed Java project facet.
原因 : 「Javaコンパイラー」と「プロジェクト・ファセットのJava」で指定しているJavaのバージョンが違うから
- Eclipse/エラー:Java compiler level does not match the version of the installed Java project facet | Tipi
- Java コンパイラー・レベルが、インストールされている Java プロジェクト・ファセットのバージョンと一致しません というエラーが出た場合 - ハニカムウエアのブログ
対応 : 「プロジェクト・ファセットのJava」と「Javaコンパイラー」のバージョンを合わせる
事象 : Javaコンパイラーを設定しても勝手に1.5に戻って怒られる。
- 環境
- macOS Big Sur バージョン11.1
- Eclipse IDE for Enterprise Java Developers Version: 2020-12 M1 (4.18.0 M1)
- 使いたいのはJava11
- [Javaコンパイラー]を「11」に設定する
- [プロジェクト・ファセットのJava]を「11」に設定する
- Mavenビルドする
- 「Java コンパイラー・レベルが、インストールされている Java プロジェクト・ファセットのバージョンと一致しません。」と言われる
- [Javaコンパイラー]を確認すると「1.5」に戻っている
原因 : Mavenのコンパイルで使うデフォルトのJDKが1.5だから
デフォルトでは、Maven 2はJDK 1.4を使用し、Maven 3はJDK 1.5を使用してプロジェクトをコンパイルします。
別のJDKバージョンのMavenプロジェクトをコンパイルするには?
対応 : pom.xmlで使うJDKを指定する
参考 : Apache Maven Compiler Plugin – Setting the -source and -target of the Java Compiler
- pom.xmlにJDKを設定する
- Mavenビルドする
- [Javaコンパイラー]が「11」のまま維持された!
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
...省略...
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
...省略...