スポンサーリンク

[IntelliJ]Compile時にjava versionが違う場合のチェック事項

スポンサーリンク

Intellijでjava versionの指定が正しく出来ていない場合,以下のようなエラーが吐かれます.

java: javacTask: source release 8 requires target release 1.8
java: Compilation failed: internal java compiler error

コードのバージョンはJava8を利用しているが,設定されたCompilerのJava Versionが異なる(互換性がない)場合に上記のようなエラーが発生します.この時は以下の設定を確認しましょう.

Projectに設定されているJava言語レベル

上記からJava8に準拠したコードであることが分かります.なお,複数のModuleが存在している場合には,個別に設定されている可能性があるので,以下でチェックしましょう.

Compilerのtarget Java言語レベル

Compilerで設定されているtarget java言語レベルがProjectで設定されたjava言語レベルより低い場合に,エラーが発生します.そこで,基本的には”Projectに設定されているJava言語レベル”で設定されているバージョンと同一にしましょう.これで問題なくコンパイルできます.

Mavenで管理している場合

Compilerのバージョンを以下のようにMavenで管理している場合があります.この場合も,上記のCompilerバージョンの設定と同様に,Moduleが要求しているJava言語レベルに設定する必要があります.(あるいはModuleの言語レベルを変更する)

<properties>     
    <maven.compiler.source>1.8</maven.compiler.source>  
    <maven.compiler.target>1.8</maven.compiler.target> 
</properties> 

それでも特定のModuleのコンパイルがうまくいかない場合

自分の開発したいモジュールとは関係ないが,実行にはプロジェクト全体のビルドが必要で,特定のモジュールのコンパイルで詰まってしまったときは,最終手段としてそのモジュールをコンパイル対象から外しましょう.

おそらく上記の設定のいずれかが正しく設定されていないことに起因する問題だとは思いますが,工数が限られる中で自分と関係ない環境設定に時間を取られすぎる訳にはいきません.下記からCompile対象から特定ファイルを除去することが可能です.

まぁ本当は良くないので,しっかり原因を突き詰めてチームで共有するのがいいのでしょうが,単に自分の環境設定が悪い可能性もあるので,応急処置的にはいいですね.時間があるときに解析しましょう.

タイトルとURLをコピーしました