アイデア:javac:ソースリリース1.7にはターゲットリリース1.7が必要


474

IntelliJ IDEAを使用してJUnitテストを実行すると、

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

どうすれば修正できますか?

  • SDK 1.7の使用
  • モジュールの言語レベルは1.7です

Mavenビルドは正常に動作します。(それがIDEA構成の問題でこれを信じる理由です)

回答:


689

最も可能性が高いのは、Mavenからインポートされた不適切なコンパイラオプションです。

コンパイラーオプション

また、スクリーンショットに概説されているプロジェクトとモジュールのバイトコード(ターゲット)バージョン設定を確認します。

ソース言語レベルが構成されている他の場所:

  • プロジェクトの構造| 事業

事業

  • プロジェクトの構造| モジュール(すべてのモジュールを確認)| 出典

ソース

Mavenのデフォルトの言語レベル1.5(5.0)です。このスクリーンショットでは、このバージョンがモジュール言語レベルとして表示されます。

これは、内部のmaven-compiler-plugin設定を使用して変更できますpom.xml

<project>
  [...]
  <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>
  [...]
</project>

または

<project>
  [...]
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  [...]
</project>

MavenプロジェクトツールウィンドウでMavenプロジェクトを再インポートした後、IntelliJ IDEAはこの設定を尊重します。

再輸入


2
正しい。この設定はプロジェクトのすべてのモジュールに共通ですか、それとも特定のモジュールに固有ですか?
James Raitsev、

1
この設定はプロジェクトごとであり、すべてのモジュールに影響します。
CrazyCoder

8
これを修正して適用した後、(Mavenの変更などによって)誤った値に戻る理由はありますか?
Patrick

5
@ Patrick、pom.xmlJavaコンパイラプラグイン構成は、次回pom.xmlに変更を加えるか(自動再インポートが有効な場合)、プロジェクトを手動で再インポートするときに、この設定をオーバーライドするJavaバージョンを指定する場合があります。
CrazyCoder

1
@CrazyCoderこれをかなり以前に変更した後でpom.xmlを変更しました(pomへの他の着信変更を待機していたため)、これはかなり合理的な説明のように聞こえます。ありがとう
Patrick

358

IntelliJ 15、2016、2017

IntelliJ 13および14について以下で説明するものと同様ですが、[設定/環境設定]パネルに追加のレベルがあります。設定 > ビルド、実行、デプロイメント > コンパイラ > Javaコンパイラ

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

IntelliJ 13および14

IntelliJ 13および14では、[設定]> [コンパイラ]> [Javaコンパイラ UI ]をチェックして、モジュール内の別のバイトコードバージョンをターゲットにしていないことを確認します。

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


3
モジュールを削除して自動解決させる必要がありました(jdkのデフォルトでは空白のままにします)
Akin Okegbile

3
最新のIdea14.1に対応
Tushar

ここでの修正は何ですか?
AlikElzin-kilaka 16

@ AlikElzin-kilaka、ターゲットレベルを必要に応じて設定します。
Drew Noakes

特定のモジュール設定をモジュール設定ではなく、グローバル設定の構成画面に配置する理由を誰かが説明できますか?
MK。

61

IntelliJ IDEA 14.1「ターゲットバイトコードバージョンは」別の場所にあります。

次の変更が私にとってうまくいきました:

ファイル>設定...>ビルド、実行、配置>コンパイラ> Javaコンパイラターゲットバイトコードバージョンを1.5から1.8に変更

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

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


または、jdkから判別できる場合は、空白のままにしておくことをお勧めします。
Dragonborn、2015年

Mavenとは異なる構成があるのはなぜですか?
AlikElzin-kilaka 16

42

Maven 3とJDK 7を使用している場合、ビルド構成はそのようになっているはずです。

<build>
    <finalName>SpringApp</finalName>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
        ...
    </plugins>
    ...
</build>

22

私はこれに遭遇し、修正はプロジェクト設定>モジュールに移動することでした>特定のモジュールをクリック>依存関係タブ。Module SDKがまだ1.6に設定されていることに気付きましたが、1.7に変更して機能しました。


私はこれを試しました...結局、個々のモジュールを削除しなければならず、それらを自動解決に任せました。
Akin Okegbile 2015年

14

私の場合、設定>コンパイラ> Javaコンパイラで必要なオプション(「ターゲットバイトコードバージョン」)を見つけました(intelij idea 12.1.3)


10

次のパスでプロジェクトのコンパイラ設定ファイルを変更し、「ターゲット」を1.7に変更します。

/project/.idea/compiler.xml

<bytecodeTargetLevel>
  <module name="project-name" target="1.7" />
</bytecodeTargetLevel>

これは私のために働いてくれてありがとう!プロジェクトを右クリックして「Make Module '[your app name]'」を実行することを忘れないでください
Shehaaz

5

私はフィールドを空白に設定することで解決しました:

設定>コンパイラ> Javaコンパイラ>プロジェクトのバイトコードバージョン

IntelliJはJDKのデフォルトバージョンを使用します。


4

ある瞬間から別の瞬間まで、明確な理由なしにこのエラーも発生しました。コンパイラ/モジュールなどの各種設定を変更しましたが、結局、Mavenプロジェクトを再インポートしてIntelliJプロジェクトを再作成するだけで問題は解決しました。これはバグだと思います。

IntelliJ 12 129.961


IntelliJ 14.1.2の場合も同様です。プロジェクトを再インポートし、修正されました。
スリカンス2015

4

IntelliJ IDEA 14からv14.1にわずかにアップグレードしただけで、この問題が発生しました。私にとっては、トップ/親のpomの編集を変更することが役立ち、Mavenの再インポートをクリックしました(自動でない場合)。

しかし、モジュール/集約/親モジュールおよびMaven->再インポートを右クリックするだけで十分かもしれません。


これは私のために働いた!私は私のトップレベルのモジュールと私の子モジュールのためにそれをしました
復活

2

私は方法を解決しました

ファイル>>プロジェクトの構造>>プロジェクト>>プロジェクトの言語レベル->適切なバージョンを設定します(例:1.5)


1

.idea / misc.xmlを確認してください。場合によっては、languageLevel = "JDK_1_X"属性を手動で変更する必要があります。


1

Gradleプロジェクトの場合は、build.gradleファイルで次の設定を検索します。

sourceCompatibility = "xx"
targetCompatibility = "xx"

すべてのサブプロジェクトについて、ルートのbuild.gradleファイルに次のように記述できます。

subprojects { project ->
    sourceCompatibility = "1.7"
    targetCompatibility = "1.7"
}

[アイデア]> [設定]で言語レベルを手動で設定できますが、Gradleプロジェクトの場合、IdeaはGradle設定からのモジュール.imlファイルを自動的に同期します(Idea 15以降でテスト済み)。したがって、gradleが更新されると、手動による変更はすべて上書きされます。

Gradleドキュメントに基づいて、これらが設定されていない場合は、現在のJVM構成が使用されます。


1

このエラーに遭遇する別の方法を見つけました。これは、ディレクトリ構造を再編成していて、pomの1つがjavacを構成しなくなった古い親を指している場合に取得できます(その構成が中間レベルに移動されたため)。これが発生した場合、最上位レベルはデフォルトで1.5になり、正しく動作しない下位レベルのpomがそれを継承します。

したがって、このエラーが表示されたときに確認するもう1つのことは、pom構造がディレクトリ構造と適切に一致していることです。


1

Mavenビルドが正常に機能する場合は、MavenとIntelliJ IDEAプロジェクトの構造を同期してみてください。

Mavenのツールウィンドウ、更新ボタンをクリックしてくださいリフレッシュ。このボタンを押すと、IntelliJ IDEAはMavenツールウィンドウのプロジェクト構造を解析します。

EAPビルドを使用している場合、Mavenの同期機能が壊れることがあるので、これは役に立たない可能性があることに注意してください。


0

適切なdepencyが選択されていることを確認してください。ファイル>プロジェクト構造

プロジェクトを選択し、[依存関係]タブに移動します。ドロップダウンから適切な依存関係を選択するか、新しく作成します。


0

以前のすべての解決策がうまくいかない場合(これは私の場合でした)、intellij構成ファイルを削除できます。

  • project_directory / .idea / compiler.xml
  • project_directory / .idea / encodings.xml
  • project_directory / .idea / misc.xml
  • project_directory / .idea / modules.xml
  • project_directory / .idea / vcs.xml
  • project_directory / .idea / workspace.xml

Intellijは後で新しいものを再生成します。 ただし、注意してください。これにより、プロジェクトで作成されたすべてのintellij構成も削除されます(つまり、デバッグモードの構成など)。


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