プロジェクトを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バージョンのコンパイラプラグインをローカルリポジトリにダウンロードします。ソースとターゲットは正しいようですが、このプラグインの何が問題なのかわかりません。
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
私たちが試すべきことはいくつかあります-
シンボリックリンクが正しいjdkを指していることを確認してください。そうでない場合は、既存のリンクを削除し、jdkの新しいリンクを作成します
cd /System/Library/Frameworks/JavaVM.framework/Versions/
rm CurrentJDK
ln -s /Library/Java/JavaVirtualMachines/<jdk version>.jdk/Contents/ CurrentJDK
/ 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は私のためにトリックをしました:)
この問題は、mavenが使用するJava_HOME
に関連している場合があります。
install
ターゲットを開始しようとしましたが、正確なsubjメッセージがありました。mvn -version
コマンドを試したところ、jdk7を使用していることがわかりましたset Java_HOME=C:\Java\jdk8
(私のjdkパスなので、自分のパスは異なる場合があります)mvn clean install test
と入力すると、fineが機能しました幸運を!
ここでも同じ問題ですが、Mavenがこのエラーをスローし続けたときに、Eclipse内で実行構成を使用していました。ここで正しいJDKバージョンを設定することで修正:
まず第一に、それは間違いなくバージョンの問題です。
私の状況では: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
したがって、変数へのパスを変更するだけで問題が解決します。それが誰かの時間を節約することを願っています。
私は同じ問題を抱えていました:
> Java -version
Java version "1.8.0_111"
>javac -version
javac 1.7.0.6
システム変数のパスを確認したところ、jdkがjdk 8に更新されていませんでした。正しいjdkでパスを更新した後、機能しました。
Cent osでは、代替手段を使用してバージョンを切り替えることができます。
alternatives --config javac
alternatives --config Java
ただし、MAVENはJava_HOMEを使用します。
そして、このJava_HOMEをリンクすることができます。
手動でJava_HOMEを新しいjdkフォルダーにポイントする必要があるか、OR手動でリンクを削除/削除して、上記の回答から新しい同じリンクを再度作成します。
選択肢から、jdkのパスを取得できます