IntelliJ IDEA 13は1.7に設定されていてもJava 1.5を使用します


147

すべてのプロジェクト設定(を含むFile -> Project Structure -> Project :: Project SDK)でJDK 1.7を指定しているにもかかわらずIntelliJ 13、菱形演算子を使用する単純なJava 7コードをコンパイルしようとすると、次のエラーが発生します。

java: diamond operator is not supported in -source 1.5
(use -source 7 or higher to enable diamond operator)

予想される-source 7オプションを有効にする必要がある構成の他の場所はありますか?


8
あなたに試してみました:にFile -> Project Structure -> Project :: Project language level変更しDiamonds, ARM, multi-catch etcますか?
Adam Shakhabov、2014年

39
はい。結局のところ、[ファイル]-> [プロジェクト構造]-> [モジュール] :: [ソース](パスと依存関係の横)にはさらに別のオプションがあり、正しく設定する必要がある「言語レベル」オプションがあります。コメントと回答をありがとう!:-)
PNS


33
更新する必要のある場所が3つあります。(1)[ファイル]-> [設定](ショートカットはCtrl + alt + s)をクリックし、[ビルド、実行、配置]> [コンパイラ]> [Javaコンパイラ]をクリックして、[ターゲットバイトコードバージョン]を目的のJavaバージョンに変更します。(2および3)他の場所は[ファイル]> [プロジェクト構造](Ctrl + Alt + Shift + S)> [プロジェクト設定]> [プロジェクト]の下にあり、適切なバージョンのJavaを指すようにプロジェクトSDKを変更し、プロジェクトの言語レベルを次のように設定します。正しいバージョン。コードアシストは言語レベルを変更するだけであり、残念ながらこれは新しいプロジェクトの煩わしさになります。
8bitme

2
プロジェクトに200個のモジュールがある場合、それらを1日中クリックし直す必要がありますか?

回答:


114

これで何も解決しない場合(私の場合)、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


4
良いアイデアですが、チームメイトの設定をすべて
打ち消し

8
これで問題は解決しました、ありがとう!どのようにして「チームメイトの設定を爆破する」ことができますか?プロジェクトのターゲットが1.7の場合は1.7です。チームメイトごとにターゲット環境が異なるわけではありません。
isapir 2016

1
素晴らしい、私はmavenプロジェクトです。
huuthang 2017年

1
新しいMavenプロジェクトの場合、この設定はデフォルトのMavenプロジェクトに追加できます。設定を 使用する| エディター| ファイルとコードのテンプレート| Maven | Maven Projects.xml <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> InteliJサポートフォーラム
pRmdk

これでうまくいきました。しかし、IntelliJを再起動したときだけ、プロジェクトを再構築するだけでうまくいきませんでした。
Metin Dagcilar

155

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

これも設定:

ファイル->プロジェクト構造->モジュール::ソース(パスと依存関係の隣)で、「言語レベル」オプションがあり、これも正しく設定する必要があります。


2
そしてAdditional command line parametersJava Compiler設定が空白かどうかを確認します。
NeplatnyUdaj 2014年

2
注:3番目(ファイル->プロジェクト構造->モジュール::ソース)は、私のためにそれを解決したものです。
Peter

この回答のこのスクリーンショットの役立つスクリーンショット:stackoverflow.com/a/21747329/1146608
Patrick M

1
Mavenを使用している場合は、POMを変更する必要があります。stackoverflow.com/questions/27037657/...
Benj

11
言語レベルの場合は+1。そこにはならないセットと再集合し、再再設定同じの#$%^事するので、多くの場所であること!
G.アン-SonarSourceチーム2017年

52

[IntelliJ IDEA 2016.2の場合]

Peter Gromovの回答の一部を最新のスクリーンショットで拡大したいと思います。具体的には、この特定の部分:

また、設定|をご覧ください。コンパイラ| Javaコンパイラ| モジュールごとのバイトコードのバージョン。

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

モジュールごとのバイトコードバージョン


5
私はこれらを正しい数に維持することをあきらめました(何らかの理由で変更されます—変更すると思いますgit checkout)。このリストのエントリを安全に削除できることがわかりました。モジュールは「プロジェクトバイトコードバージョン」の使用にフォールバックします。
Birchlabs 2016年

これらの数値も、予想外に1.5に戻ります。一貫して機能するのは、pom.xmlファイルでコンパイラのソースバージョンとターゲットバージョンをハードコーディングする場合のみです。
sheldonkreger 2017年

このスクリーンショットの上部にある「プロジェクトバイトコードバージョン」設定と、強調表示されている「ターゲットバイトコードバージョン」に注意してください。
バジルブルク2018

@Birchlabsありがとうございます、これが正しい答えだと思います。
chrips

1
これは私のために問題を修正することを唯一の解決策だった、のIntelliJ IDEA 2019.1
ジョアン・ロシャ・ダ・シルバ

19

あるいは、これを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>

これは、プロジェクトを終了した後に機能しました。プロジェクトを再度開くと、.ideaフォルダーと.imlファイルがすべて再作成され、削除されました。
アンドリュー

1
アイデアで「refresh Maven」ボタンを押すと機能するはずです。
OlgaMaciaszek

ソリューションが機能するには、@ OlgaMaciaszekの更新が必要でした。ありがとう!
ペイン

14

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に戻りました。

ただし、以下の行をルート(プロジェクトレベル)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>

10

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

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

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


4

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

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

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


わからないまだいますが、中にJDKのバージョンを交換する必要がありcompiler.xml、プロジェクトのルートに(IntelliJの2017.2を):sed 's/target="1.5"/target="1.8"/g' .idea/compiler.xml
オレックサンダー・ボリネッツ

compiler.xmlはプロジェクトに固有の場合があります。このコマンドは、intellijのみが必要とする* .imlファイルのみを対象としています。IDEとは関係なく、maven pom.xmlまたは場合によってはcompiler.xmlで言語設定を調整する必要がある場合があります。
Saideep Sambaraju 2017年

1
@SaideepSambaraju compiler.xmlは、私が目にしたビルド可能なアイデアプロジェクトに含まれています。私が見ると、このファイルは設定->コンパイラ(linux)設定->コンパイラ(MacOS)のモデルです。これを使用して、Oleksandrが言ったようにスクリプトによって、またはUIなしで手動でターゲットバージョンを変更できます。
Sergey Sargsyan 2018

@SergeySargsyan-確認したところ、.ideaフォルダーにあり、検索しても見つかりませんでした。指摘してくれてありがとう。
Saideep Sambaraju、2018

2

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

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


2

私は同じ問題を抱えていますが、状況は異なります。コマンドライン(mvn clean install)でmavenを使用しても問題なくコンパイルできますが、Intellij "java: diamond operator is not supported in -source 1.5"では、pom.xmlでjava 1.8を使用してmaven-compiler-pluginを設定しているにもかかわらず、常にコンパイルエラーが発生しました。

プロジェクトが依存する私のmavenのsettings.xmlにリモートリポジトリ設定があることが判明しましたが、Intellijは私のローカルmavenと同じ設定を持たない彼自身のmavenを使用しています。

したがって、私の解決策は、IntellijのMaven設定(Settings -> Build, execution, Deployment -> Maven -> Maven home directory)をローカルのMavenを使用するように変更することでした。


2

IntelliJ Community Edition 2019.02では、次の設定を変更するとうまくいきました

  1. ドロップダウンを使用して、ファイル->プロジェクト構造->プロジェクト設定->プロジェクト->プロジェクト言語レベルをJava 11に更新します(プロジェクトで使用するJavaバージョンに更新します)。

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

  3. ファイル->設定->ビルド、実行、展開->コンパイラ-> Javaコンパイラ->プロジェクトByteCodeバージョンをjava 11.に更新します。

  4. [ファイル]-> [設定]-> [ビルド、実行、展開]-> [コンパイラ]-> [Javaコンパイラ]-> [モジュールごとのバイトコードバージョン]のすべてのエントリのターゲットバージョンを更新します。


0

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

  <properties>
        <java.version>1.8</java.version>       
  </properties>

これは、Spring Bootなどの親プロジェクトを使用する場合にのみ機能します。
wggn 2017年

0

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.