2017-08-01 33 views
4

私のJavaコードでは、この行はSystem.getProperty("java.home")です。環境によっては、環境変数としてJAVA_HOMEに設定されているものと同じ値を返します。java.homeとJAVA_HOMEの相違点

ただし、環境によってはSystem.getProperty("java.home")JAVA_HOMEとはまったく異なる値を返します。

私の質問は、java.homeJAVA_HOMEの違いは、Javaの観点からですか?

JAVA_HOMEはjdkのインストールパスであり、java.homeはjreのインストールパスですが、なぜjreがjdkのインストールの一部になる可能性があるのでしょうか。

答えて

1

あなたは環境変数で指定したJDKのインストールパス(%のJAVA_HOME%の)に、JAVA_HOMEポイントを述べたように。

しかしJRE installation pathのjava.homeポイントは、今では、アプリケーションを実行するために使用されたJREを返し、同じサーバー/コンピュータにJREとJDKの複数のバージョンを持つことができることを忘れないでください

また、使用するjreまたはjdkを指定するアプリケーションを実行できます。

だから、例えば、あなたがあなたの環境パス上にあるとします。

%JAVA_HOME% = C:\Program Files\Java\jdk1.6.0_24 

しかし、あなたは、特定のJREを使用してアプリケーションを実行した場合:実行時にアプリケーション内で

"C:\Program Files (x86)\Java\jre1.8.0_73\bin\java" -jar TheJavaFile.jar 

を、 java.homeの別のバージョンのJAVA_HOMEにアクセスします。

これは、変数とシステムプロパティのバージョンが異なる場合がある理由を説明します。

また、はJREが、その後、彼らは別の場所にインストールされているJDKとは異なる製品であるため、彼らはとの違い何について、

今独立しているので、パスは、かなり異なる場合があることに注意してくださいしてくださいJRE対1 JDK、この図はかなり明確にそれを説明する:

enter image description here

JDKは、JREのスーパーセットであり、かつJREにあるすべてのものが含まれ、プラスアプレットとアプリケーションの開発に必要なコンパイラやデバッガなどのツール。 JREは、ライブラリ、Java Virtual マシン(JVM)、およびJavaプログラミング言語で書かれたアプレットおよびアプリケーション を実行するためのその他のコンポーネントを提供します。

2

Oracle documentationjava.homeは、Javaランタイム環境のインストールディレクトリを表すシステムプロパティです。 JAVA_HOMEは、という環境変数です。システムプロパティではありません。システムプロパティと環境変数の違いを確認するには、this postを参照してください。

this postを参照して、JAVA_HOMEの詳細を参照することもできます。

+0

短く要点です。これは答えとしてマークする必要があります。 – Jay

+0

JAVA_HOME = jdkのインストールパスとjava.home = jreのインストールパス...これは答えが必要な質問のようです:jreパスがjdkパスの中で一致しないのはなぜですか? ?その答えは「彼らは異なった独立した製品なので、同じ道を共有する必要はありません」という単純なものになる可能性があります。 –

+0

@MarcoVargas - そうです。しかし、私の質問は - jdk = C:/ Program Files/Java/jdk1.8.0_112でしたし、なぜC:/ Program Files/Java/jdk1.8.0_112/jreにできないのですか? – yogsma

関連する問題