課題

インストール済みのJREのバージョンを上げたり、コンパイラの準拠レベルを変更したりするとエラーが表示されることがある。

「Javaコンパイラー・レベルがインストールされているJavaプロジェクト・ファセットのバージョンと一致しません。」

 

プロジェクト・ファセットとはなにか?

原因をさくっと解決するのもありだがこの際だしまとめておく。

ファセットは、Java EE プロジェクトの特性および要件を定義し、ランタイム構成の一部として使用されます。

ファセットをプロジェクトに追加すると、そのプロジェクトは、特定のタスクを実行し、特定の要求を実現し、または特定の特性を持つように構成されます。 例えば、EAR ファセットは、デプロイメント記述子を追加し、プロジェクトのクラスパスを設定することによって、エンタープライズ・アプリケーションとして機能するようにプロジェクトを設定します。

 

プロジェクト全体の機能や要件をまとめた設定のようである。

Javaコンパイラー・レベルで指定されているJavaのバージョンが、プロジェクト全体の要件定義をしたプロジェクト・ファセットのJavaのバージョンに反しているよ!というエラーである。

まぁ簡単に言えばバージョン不一致エラーです。

結果として、解決方法は2通りあることになる。

  1. Javaコンパイラー・レベルをプロジェクト・ファセットに合わせる
  2. プロジェクト・ファセットをJavaコンパイラー・レベルに合わせる

どっちを基準にするかでやり方が違うので注意してください。

※このエラーメッセージの場合は2で解決されるケースが多い所感です

 

1.Javaコンパイラー・レベルをプロジェクト・ファセットに合わせる

まずプロジェクト・ファセットのバージョンを確認しましょう。

  1. プロジェクトを右クリックし[プロパティ]を選択
  2. その中からプロジェクト・ファセットを選択
  3. Javaのバージョンを確認

 

次に、このJavaのバージョンを参考にコンパイラの準拠レベルを合わせていきます。

  1. [設定]→[Java] → [コンパイラー]からコンパイラの準拠レベルの設定画面を開く
  2. JDK準拠のレベルをプロジェクト・ファセットのJavaバージョンに合わせる
  3. [適用]ボタンを押す
  4. 再ビルドを促されるので[はい]を押す

これで解決されるだろうと思います。

 

2.プロジェクト・ファセットをJavaコンパイラー・レベルに合わせる

1と順序を逆にするだけです。

まずJavaコンパイラー・レベルを確認しましょう。

  1. [設定]→[Java] → [コンパイラー]からコンパイラの準拠レベルの設定画面を開く
  2. JDKの準拠レベルのバージョンを確認

次にプロジェクト・ファセットをこのバージョンに合わせていきます。

  1. プロジェクトを右クリックし[プロパティ]を選択
  2. その中からプロジェクト・ファセットを選択
  3. Javaのバージョンを確認
  4. となりの▼タブからバージョンを合わせる
  5. [完了]ボタンを押す

これで解決されるだろうと思います。

 

これでも解決しない・実行されない場合

こちらの記事も参考にしてください。

https://senobi.org/eclipse-jre-compliance-level/

https://senobi.org/eclipse-project-facet/