mvn -version
を実行したときに、Java_home
が...jdk\jre
を指していることに気付きました(以下を参照)。それは間違っていますか? ...\jdk.x.y.z
(\jre
なし)を指しているのではないでしょうか?その場合、どのようにリセットしますか? (グローバル%Java_home%
はjdk
ディレクトリを指します)
C:\Users\Owner>mvn -version
Apache Maven 2.2.1 (r801777; 2009-08-06 15:16:01-0400)
Java version: 1.7.0_17
Java home: C:\Program Files\Java\jdk1.7.0_17\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7" version: "6.1" Arch: "AMD64" Family: "windows"
いいえ、それは間違っていません。 JDKが使用するJREを指します。 Mavenの外でJava_HOME
を印刷すると、正しく印刷されるはずです。
C:\>echo %Java_HOME%
C:\Program Files\Java\jdk1.7.0_07
C:\>mvn -version
Apache Maven 3.0.4 (r1232337; 2012-01-17 10:44:56+0200)
Maven home: C:\APPS\Apache-maven-3.0.4\bin\..
Java version: 1.7.0_07, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.7.0_07\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", Arch: "AMD64", family: "windows"
C:\>
したがって、基本的にJava_HOMEはJDKインストールを指す必要があります(mavenにはtools.jarが必要です)が、mavenは実際にJDK内のjreを使用してそれ自体を実行します。
mvn -version
を使用する場合、 ソースコードからわかるように、mavenはJava内部Java.homeプロパティを使用します :
version.append( "Java home: " + System.getProperty( "Java.home", "<unknown Java home>" ) ).append( LS );
このプロパティはJava_HOME環境設定と同じものではないので、だまされる可能性があります。実際には、コードを実行しているJREを示す動的プロパティです。同じものを出力するTest.Javaテストクラスをコンパイルして実行すると、Java_HOMEがJDKを指している場合、Java.homeの値がJava_HOMEと等しくないことがわかります。これは予想されることです。
引用 this :
Java_HOMEとJava.homeの違いは何ですか?
Java_HOMEは、JDKインストールディレクトリです(例:C:\ jdk5)。環境変数として設定され、WindowsバッチファイルまたはUnixスクリプトで参照されることを意図しています。他の一般的な環境変数とともに、Windowsコントロールパネルと.tcshファイルに常にあります。いくつかのJavaアプリケーションはこの目的のためにjdk.homeという名前を使用しますが、これはより良い名前だと思います。
Java.homeはJREインストールディレクトリです(例:C:\ jdk5\jre、またはC:\ Program Files\Java\jre1.5.0_06)。 Java_HOMEとは異なり、Java.homeを環境変数として見たことはありません。 Java.homeはビルドインJavaシステムプロパティ、その値はJREインストールディレクトリです。すべてのJavaシステムプロパティはAntビルドプロパティとして公開されているため、 、ビルドファイルで$ {Java.home}を使用することもできます。
Jre.homeはより良い名前でしょうか?たぶん、しかしサンはそれを変えるとは思わない。
Maven.batでmavenがJava_HOMEを使用していることがわかります。
:endInit
SET MAVEN_Java_EXE="%Java_HOME%\bin\Java.exe"
..
%MAVEN_Java_EXE% %MAVEN_OPTS% -classpath %CLASSWORLDS_JAR% ..
確認したい場合は、mvn.batの「@echo off」ステートメントをコメントアウトして、使用されていることを確認できます。
TL; DR:提供された情報に基づいて、構成は正しく、何も変更する必要はありません。
編集:このスレッドのおかげで、 これが紛らわしい という問題もあり、Mavenバージョン3.5.4の出力が変更されました.
Mvn/jdkの問題のデバッグに役立ったのは、mvnを実行する前にこれを設定することです:set MAVEN_BATCH_ECHO=on
MavenがJavaを選択する方法を含む詳細な出力(Windows)を取得します。