IntelliJでMavenのJavaバージョンを変更するにはどうすればよいですか?


83

私はMavenとIntelliJIDEAの両方に不慣れです。

Java 8で記述されたMavenプロジェクトがあります。ビルドしようとすると(Mavenプロジェクトウィンドウ->ライフサイクル->コンパイル-> Mavenビルドの実行)、一連のコンパイルエラーが発生します。

[ERROR] path/to/file.java:[26,52] lambda expressions are not supported in -source 1.5
(use -source 8 or higher to enable lambda expressions)

-sourceパラメーターの値はどこで変更する必要がありますか?[設定]-> [コンパイラ]-> [Javaコンパイラ]で追加パラメータとして追加しようとしましたが、同じ結果が得られました。

プロジェクトとモジュールの言語レベルは両方とも8.0に設定されています。

Maven3.2.3とIntelliJIDEA Community Edition13.1.2を使用しています。


pomファイルで変更しましたか?
eis 2014

私のアプローチは、次のようにIntelliJに直接設定することでした:http
小泉由美

回答:


118

またはもっと簡単に、これをあなたのpomのpropertiesセクションに追加してください:

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

<build / configuration>タグを使用するまで、これは2017.2.5では機能しません。
Pawel Veselov 2017年

1
IntelliJ設定のどれも私のために何もしませんでした。この答えは、何時間もの検索の後でそれを修正した唯一のものです。ありがとう!
ティム

12
正常に動作しますが、pom.xmlファイルを再インポートすることを忘れないでください。右クリック->
Maven-

これは、start.spring.ioによって生成されたpomに配置する必要があります!なぜ彼らがそれをしないのか分かりません。彼らがそこに置いた「<java.version> 1.8 </java.version>」は役に立たない。
user0 0719年

1
プラットフォーム設定に必要なSDK / JDKがすでに含まれていることを確認してください。
gkephorus

34

概要:

  • 'maven-compiler-plugin'は常に機能します!それは私があなたに使うことを提案するものです。

言語レベルを変更するには、

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.4</source>
                <target>1.4</target>
            </configuration>
        </plugin>
    </plugins>
</build>

プロパティは、Intellijの言語レベルを常に変更するわけではありません!

以下のコードでは、maven-compiler-plugin
(Intellijのjdkは1.8)を使用してpomで1.4が構成され、 それに応じてプロジェクトの言語レベルが1.4に変更されました。

ここに画像の説明を入力してください

再確認しました!例です。ほとんどの場合、JDKのバージョンを1.4にダウングレードすることはありません。

もちろん、プロパティを使用する場合、たとえばpom 1.8を挿入した場合、Intellijで1.8 JDKを使用する場合(言語レベルのデフォルトは1.8であるか、言語のデフォルトが手動で変更された場合)、1.8でコーディングできます。ただし、mvnコンパイルでは、プロパティは表示されず、デフォルトでMaven 1.5になり、コンパイルは成功しません。


ところで、これが混乱を引き起こしたと思いますが、Eclipseはmaven.compiler.sourceとmaven.compiler.targetをサポートしています。
Rudy Vissers 2016年

pomファイルを更新しましたが、wokrにするには、プロジェクト設定でもこれを変更する必要がありました。
gloomy.penguin 2016

@ gloomy.penguin:Mavenクイックスタートアーキタイプから新しいアイデアプロジェクトを作成しました。次に、プロジェクト設定--->モジュールを確認し、5.0-'enum 'キーワード、generic、autoboxingなどを読みました。次に、maven-compiler-pluginからソース(1.6)とターゲット(1.6)を追加し、正確に同じで、インターフェイスで6- @ Overrideを読みました。混乱があると思います。デフォルトのSDKを変更したくありません。それについて私たちにできることは何もありません。
Rudy Vissers 2016

@gloomy:penguin:JDK 1.5がデフォルトで構成されていて、pomの構成を1.6に変更すると、これらのjdkをIntellijに追加した場合でも、IdeaはデフォルトのSDKを1.6、1.7、または1.8に変更しません。pomの構成では、デフォルトのSDKを使用してソースバージョンとターゲットバージョンを変更するようにIdeaに依頼します。写真の例では、1.4が要求され、デフォルトのjdkは1.8であり、もちろん問題ありません。pomに設定したバージョンと互換性のあるデフォルトのjdkを設定する必要があります。
Rudy Vissers 2016

@ glomy-penguin:つまり、1.8はすべての構成をサポートします(9ではありません!!!)。それが役に立てば幸い。繰り返しますが、チェックしたところ、機能します。そして、プロジェクト設定--->モジュールで結果を確認してください。
Rudy Vissers 2016

7

以下のpom.xmlに示すようにソースを変更します

<build>
        <finalName>MQService</finalName>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

6

質問への回答が懸念に対処したとは思わない-「... inIntelliJ」。

手順は次のとおりです。-

  • IntelliJの[設定]に移動します(またはショートカット⌘+、)
  • ビルド、実行、デプロイメント> Maven>インポーター-「JDKfor Importer」ドロップダウンを選択し、ご希望のJavaバージョンを選択して、「適用」をクリックします。
  • ビルド、実行、デプロイメント> Maven>ランナー-「JRE」ドロップダウンを選択し、好みのJavaバージョンを選択して、「適用」をクリックします。
  • [OK]をクリックします

4

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>

当初の投稿:IntelliJ IDEA 13は、1.7に設定されているにもかかわらずJava1.5を使用しています


1

これを行うには2つの方法があります。

最初に-プロパティを追加します

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

2番目-プラグインを追加

<plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
</plugin>

0

言語レベルを強制的に変更するには、pom.xmlに以下のコードを追加する必要があります

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>8</source>
                <target>8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

intelliJ2019.3 CEは、イン​​ポートしてからalt + enterを実行すると、「この機能を使用するには言語レベルを8に変更する」というオプションが表示されます。


0

ubuntuターミナルを開き、ルートディレクトリに移動して次のように入力します。

export JAVA_HOME = <path to jdk>

たとえば、私にとっては問題なく動作します{IntelliJターミナルでも同じことを行います}。

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

設定値の種類を確認する echo $JAVA_HOME

Mavenのバージョンタイプを確認するには: mvn -version

このコマンドを入力すると、JDKのすべてのパスを検索でき、JDKのバージョンを設定できます。

sudo update-alternatives --config java

また、あなたが同じjava -versionとを持っていることを確認してくださいjavac -version

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