2013-03-07 9 views
28

mvn -versionを実行したとき、java_home...jdk\jre(以下に示すように)を指摘しました。 それは間違っていますか? ...\jdk.x.y.z\jreなし)を指すはずですか? もしそうなら、どうすればリセットできますか?MavenのJava_home

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" 

答えて

50

jdkディレクトリにグローバル%java_home%ポイントで)いいえ、それは間違っていないのです。 JDKで使用されているJREを指しています.JREは、それが想定しているものです。あなたはJAVA_HOME外Mavenをプリントアウトした場合、それが正しく印刷される必要があります:

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を使用しています。 source codeから分かるように

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は最初から使用されており、現在は となっています。

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を見ることができるがmvn.batにJAVA_HOMEを使用しています。

:endInit 
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" 
.. 
%MAVEN_JAVA_EXE% %MAVEN_OPTS% -classpath %CLASSWORLDS_JAR% .. 

をそして、あなたが確認する場合は、あなたがして、mvn.batで文をコメントアウト「オフ@echo」することができますそれが使用されていることがわかります。


TL; DR:指定した情報に基づいて、設定は正しいので、何も変更する必要はありません。


編集:今もan issue open about this being confusingがあります。多分彼らは将来それを変えるだろう。

+0

ありがとうございます! +1の 'TL; DR';)) –

+0

いいえprob。おそらくこれが質問に答えられたと思ったら受け入れるでしょう:) – eis

+0

@eisこんにちは、問題がありますhttp://stackoverflow.com/questions/26313902/maven-error-perhaps-you-are-running-on-a- jre-a-j-jkここ、あなたがそれを理解するのを助けてくれますか?ありがとう。 – Kraken

関連する問題