web-dev-qa-db-ja.com

IntelliJ IDEA 13は、1.7に設定されているにもかかわらず、Java 1.5を使用します

すべてのプロジェクト設定(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オプションを有効にする必要がある他の場所はありますか?

126
PNS

これが役に立たない場合(私の場合)、次のように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

95

プロジェクト/モジュールの言語レベルを確認してください(プロジェクト構造|プロジェクト;プロジェクト構造|モジュール|モジュール名|ソース)。 [設定] | [コンパイラ| Javaコンパイラ|モジュールごとのバイトコードバージョン。

これも設定してください:

File-> Project Structure-> Modules :: Sources(Paths and Dependenciesの隣)で、「Language level」オプションがあり、これも正しく設定する必要があります。

143
Peter Gromov

[IntelliJ IDEA 2016.2の場合]

Peter Gromovの答え の一部を最新のスクリーンショットで拡張したいと思います。特にこの特定の部分:

[設定] | [コンパイラ| Javaコンパイラ|モジュールごとのバイトコードバージョン。

(少なくとも2016.2では)gitの異なるコミットをチェックアウトすると、これらが1.5にリセットされると思います。

Per-module bytecode version

37
Birchlabs

または、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>
13
OlgaMaciaszek

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>
9
Anamika Patel

ファイル->プロジェクト構造->プロジェクト設定->プロジェクト->プロジェクト言語レベル

ファイル->プロジェクト構造->プロジェクト設定->モジュール->言語レベル

ドロップダウンを使用してレベルを変更する

8
Ketan Keshri

コマンドライン(Unix端末)でプロジェクトのルートフォルダーに移動し、これを実行します。

find . -type f -name '*.iml' -exec sed -i '' s/JDK_1_5/JDK_1_8/g {} +

これにより、すべてのプロジェクト.imlファイルの言語レベルプロパティがJava 1.5からJava 1.8に変更されます。

4

まず、File > SettingsCompiler > Java Compilerの下にある「プロジェクトバイトコードバージョン」を変更する必要があります

第二に、完全な再構築を行います。

2
Elliott Frisch

私は同じ問題を抱えていますが、状況は異なります。コマンドライン(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を使用することでした。

2
jordom

IntelliJ 2017で次のプロパティが機能していました

  <properties>
        <Java.version>1.8</Java.version>       
  </properties>
0
H.Rabiee

これを引き起こす可能性のあるもう1つのことは、<parent>プロジェクトのversionが正しくないことです。

私の場合、それは存在しないプロジェクトを指しており、何らかの理由でIntelliJは設定を1.5以降に修正しましたが、それをターゲットコードバージョンを5として解釈していました(11に設定したにもかかわらず)。

0
syntagma