すべてのプロジェクト設定(File -> Project Structure -> Project :: Project SDK
を含む)でJDK 1.7を指定しているにもかかわらず、ダイヤモンド演算子を使用する単純なJava 7コードをコンパイルしようとすると、IntelliJ 13
によって次のエラーが生成されます。
Java: diamond operator is not supported in -source 1.5
(use -source 7 or higher to enable diamond operator)
構成に、予想される-source 7
オプションを有効にする必要がある他の場所はありますか?
これが役に立たない場合(私の場合)、次のようにpom.xmlで設定できます。
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
このクールな男がここで述べたように: https://stackoverflow.com/a/25888116/1643465
プロジェクト/モジュールの言語レベルを確認してください(プロジェクト構造|プロジェクト;プロジェクト構造|モジュール|モジュール名|ソース)。 [設定] | [コンパイラ| Javaコンパイラ|モジュールごとのバイトコードバージョン。
これも設定してください:
File-> Project Structure-> Modules :: Sources(Paths and Dependenciesの隣)で、「Language level」オプションがあり、これも正しく設定する必要があります。
[IntelliJ IDEA 2016.2の場合]
Peter Gromovの答え の一部を最新のスクリーンショットで拡張したいと思います。特にこの特定の部分:
[設定] | [コンパイラ| Javaコンパイラ|モジュールごとのバイトコードバージョン。
(少なくとも2016.2では)git
の異なるコミットをチェックアウトすると、これらが1.5にリセットされると思います。
または、pom.xmlにこれを追加することにより、適切なJavaバージョンでmaven-compiler-pluginを適用できます。
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
Intellij IDEAを次のように変更してみました。
1。
File >> Settings >> Build, Execution, Deployment >> Compiler >> Java Compiler >> project bytecode version: 1.8 >> Per-module bytecode version: 1.8
2。
File >> Project Structure >> Project Settings >> Project >> SDK : 1.8, Project Language : 8 - Lambdas
File >> Project Structure >> Project Settings >> Modules >> abc : Language level: 8 - Lambdas
しかし、何も機能せず、保存するとすぐにバージョンがJava 1.5に戻りました。
ただし、root(プロジェクトレベル)pom.xmlに以下の行を追加すると、上記の問題を解決することができました:(両方のオプションが機能しました)
オプション1:
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
オプション2:
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
ファイル->プロジェクト構造->プロジェクト設定->プロジェクト->プロジェクト言語レベル
ファイル->プロジェクト構造->プロジェクト設定->モジュール->言語レベル
ドロップダウンを使用してレベルを変更する
コマンドライン(Unix端末)でプロジェクトのルートフォルダーに移動し、これを実行します。
find . -type f -name '*.iml' -exec sed -i '' s/JDK_1_5/JDK_1_8/g {} +
これにより、すべてのプロジェクト.imlファイルの言語レベルプロパティがJava 1.5からJava 1.8に変更されます。
まず、File > Settings
、Compiler > Java Compiler
の下にある「プロジェクトバイトコードバージョン」を変更する必要があります
第二に、完全な再構築を行います。
私は同じ問題を抱えていますが、状況は異なります。コマンドライン(mvn clean install
)でmavenを使用して問題なくコンパイルできますが、Intellijでは、pom.xmlでJava 1.8を使用してmaven-compiler-pluginを設定したにもかかわらず、常に"Java: diamond operator is not supported in -source 1.5"
コンパイルエラーが発生しました。
プロジェクトが依存しているmavenのsettings.xmlにリモートリポジトリ設定があることがわかりましたが、Intellijはローカルmavenと同じ設定を持たない独自のmavenを使用します。
したがって、私の解決策は、IntellijのMaven設定(Settings -> Build, execution, Deployment -> Maven -> Maven home directory
)を変更してローカルMavenを使用することでした。
IntelliJ 2017で次のプロパティが機能していました
<properties>
<Java.version>1.8</Java.version>
</properties>
これを引き起こす可能性のあるもう1つのことは、<parent>
プロジェクトのversion
が正しくないことです。
私の場合、それは存在しないプロジェクトを指しており、何らかの理由でIntelliJは設定を1.5以降に修正しましたが、それをターゲットコードバージョンを5として解釈していました(11に設定したにもかかわらず)。