web-dev-qa-db-ja.com

Maven:致命的なエラーのコンパイル:無効なターゲットリリース:1.8

プロジェクトをjdk 1.6からjdk 1.8にアップグレードしました。自分のマシンでプロジェクトをビルドしているときに、次のエラーが発生します。

[エラー]プロジェクト例外でゴールorg.Apache.maven.plugins:maven-compiler-plugin:3.3:compile(default-compile)を実行できませんでした:致命的なエラーコンパイル:無効なターゲットリリース:1.8-> [ヘルプ1]

これが使用されているmavenコンパイラプラグインです

 <plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.3</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        </configuration>
  </plugin>

私は多くの投稿を調べましたが、それらのほとんどは、Java_home用に構成された正しいバージョンがないことに関連しています。私はこれらすべての側面を確認しましたが、どれも驚くべきものを見つけることができませんでした。

Javaバージョン-

 qadeersmsiphone:main pdubey$ Java -version
 Java version "1.8.0_51"
 Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
 Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)

Mavenバージョン-

qadeersmsiphone:main pdubey$ mvn -version
Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 08:22:22-0700)
Maven home: /usr/share/maven
Java version: 1.8.0_51, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.8.5", Arch: "x86_64", family: "mac"

そして、私はプロジェクトの構築中にmavenがjdk 1.8を使用していることを確認しました

qadeersmsiphone:main pdubey$ mvn install -debug
Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 08:22:22-0700)
Maven home: /usr/share/maven
Java version: 1.8.0_51, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.8.5", Arch: "x86_64", family: "mac"
[INFO] Error stacktraces are turned on.
[DEBUG] Reading global settings from /usr/share/maven/conf/settings.xml
[DEBUG] Reading user settings from /Users/pdubey/.m2/settings.xml
[DEBUG] Using local repository at /Users/pdubey/.m2/repository
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10.0 for  /Users/pdubey/.m2/repository
[INFO] Scanning for projects...

PDATE: pomファイルのmaven-compiler-pluginを削除することで機能させることができます(理想的には、私はこれを行いたくありません)。また、このプラグインを削除した場合でも、Mavenはデフォルトで3.3バージョンのコンパイラプラグインをローカルリポジトリにダウンロードします。ソースとターゲットは正しいようですが、このプラグインの何が問題なのかわかりません。

12
Pankaj

JavaおよびJavacバージョン-My Java version was 1.8.0_51

$ Java -version
Java version "1.8.0_51"

しかし、javacバージョンは古いjdkを指していました1.7.0_67

$ javac -version
javac 1.7.0_67

私たちが試すべきことはいくつかあります-

  1. シンボリックリンクが正しいjdkを指していることを確認してください。そうでない場合は、既存のリンクを削除し、jdkの新しいリンクを作成します

    cd /System/Library/Frameworks/JavaVM.framework/Versions/
    rm CurrentJDK
    ln -s /Library/Java/JavaVirtualMachines/<jdk version>.jdk/Contents/ CurrentJDK
    
  2. / Library/Java/Extensionにtools.jarがありました。これは古いjdkからのものだと思います。

    cd /Library/Java/Extensions
    -rw-r--r--  1 root  admin  15286304 Jan 14  2015 tools.jar
    

    これを削除

    Sudo rm -rf /Library/Java/Extensions
    

ポイント2は私のためにトリックをしました:)

15
Pankaj

この問題は、mavenが使用するJava_HOMEに関連している場合があります。

  • 私の特定のケースでは、installターゲットを開始しようとしましたが、正確なsubjメッセージがありました。
  • 次に、mvn -versionコマンドを試したところ、jdk7を使用していることがわかりました
  • 次に、コンソールで実行しますset Java_HOME=C:\Java\jdk8(私のjdkパスなので、自分のパスは異なる場合があります)
  • 次にmvn clean install testと入力すると、fineが機能しました

幸運を!

7
Lord Nighton

ここでも同じ問題ですが、Mavenがこのエラーをスローし続けたときに、Eclipse内で実行構成を使用していました。ここで正しいJDKバージョンを設定することで修正:

Run Configuration image

1
Manu Pillai

まず第一に、それは間違いなくバージョンの問題です。

私の状況では:Java -versionは結果を示しました

Java version "1.8.0_172"

そしてjavac -versionが表示されていました

javac 1.8.0_172

しかし、MavenはJava_HOME環境変数を使用してJDKバージョンを取得し、プロジェクトをビルドしてプラグインとして実行します。それを確認する方法は

echo %Java_HOME%

私の状況では

jdk1.7.0_172

したがって、変数へのパスを変更するだけで問題が解決します。それが誰かの時間を節約することを願っています。

0
Kostiantyn

私は同じ問題を抱えていました:

> Java -version
Java version "1.8.0_111"

>javac -version
javac 1.7.0.6

システム変数のパスを確認したところ、jdkがjdk 8に更新されていませんでした。正しいjdkでパスを更新した後、機能しました。

0
Adelina

Cent osでは、代替手段を使用してバージョンを切り替えることができます。

alternatives --config javac
alternatives --config Java

ただし、MAVENはJava_HOMEを使用します。

そして、このJava_HOMEをリンクすることができます。

手動でJava_HOMEを新しいjdkフォルダーにポイントする必要があるか、OR手動でリンクを削除/削除して、上記の回答から新しい同じリンクを再度作成します。

選択肢から、jdkのパスを取得できます

0