JAVA_HOME環境変数が存在する理由は何ですか?


92

多くのJavaベースのアプリケーションでは、JAVA_HOME環境変数を設定する必要があります。この変数の目的は何ですか?



2
質問にはまだ答えがありません。java自体を実行する場合、パスにバイナリを含むフォルダがある場合は、この変数を設定する必要はありません。すべての答えは明白です:「Javaがインストールされた場所」。しかし、なぜ:Javaアプリケーションを実行する意味は何ですか?
ウルフ

7
これらすべてのコメントと回答にもかかわらず、この環境変数を設定する実際の理由はわかりません。根拠なし。私はこれをwsdl2javaで設定しようとしてここに来ました。私がこのツールを使用していなかった場合、env変数は必要ありません...いくつかのツールがこの変数を使用しているだけのようです。しかし、なぜ?
Thufir 2017

@Thufir- ただし、理由がどこにも明示的に示されているのを見たことがありません。-JAVA_HOMEは単なる慣習です。誰もが使用することに同意したこと以外に特別な意味はありません-私が知っている唯一の使用法は、PATH変数で通常設定されるJREとJDKを区別する機能をツールに提供することです。通常、JAVE_HOMEはJDKに設定されています。-それは明白です。Java exeを検索するための複数の場所が存在する可能性があるPATHの場合のように、ディレクトリの順序を処理する必要はありません。
Rohan

回答:


22

環境変数は、ドライブ、パス、ファイル名などの情報を含む文字列です。

JAVA_HOME環境変数の Javaランタイム環境(JRE)がコンピュータにインストールされているディレクトリを指します。


40
1つの修正:JAVA_HOMEはJREではなくJDKを指す必要があります。多くのアプリは違いを気にしませんが、それはいくつかにとって重要です。
クリス・ナバ

4
JDKにはJREフォルダーもあります。したがって、JAVA_HOMEの助けを借りて、アプリケーションはJREだけでなくJDKも見つけることができます。
2014年

@ChrisNava:JREのインストールにJAVA_HOMEを指していることは、いくつかの例(私が推測するほとんどの非開発例)に有効であるように見えるstackoverflow.com/questions/17601827/...。つまり、「すべき」と言うのは言い過ぎです。
cic

18

目的は、Javaがインストールされている場所を示すことです。$JAVA_HOME/bin/javaJavaランタイムを実行する必要があります。


4
しかし、javaはパスに含まれている必要があり、バイナリは自分自身を見つけて相対パスを使用して他のファイルを開くことができるため、それは愚かです。
LtWorf 2014

3
複数のSDKがインストールされている場合など、Javaが$ PATHにない場合に役立ちます。
Haakon 2014

バイナリの最初の引数は実行可能ファイル自体の完全な名前です。Javaが独自のディレクトリを見つけるためにパスに含まれている必要はありません。
LtWorf 2014

@Haakon誰かが複数のJDKをセットアップしようとしているのに、なぜJavaをパスに含めたくないのでしょうか。Windowsはどうやってjava_homeからjavaを見つけるのですか?パスは多かれ少なかれ「OSが実行可能ファイルを探す場所のリスト」として定義されていると思いました。
LastStar007

7

Javaプログラムを実行する場合、最初にJVMを起動する必要があります。通常、これは実行可能ファイルを実行することによって行われます。Windowsでは、これはjava.exeです。たとえば、完全なパスを指定するなど、さまざまな方法でそれを取得できます。

C:\somedir\bin\java.exe

またはそれをあなたのPATHに持っているかもしれません。

コマンドライン引数として、プログラムであるクラスファイルまたはクラスファイルを含むJARファイルを指定します。しかし、それだけでは不十分です。java.exe自体には、他のさまざまなリソース、特にすべてのJavaライブラリが必要です。環境変数JAVA_HOMEを設定することにより、JRE、つまりこれらのすべてのランタイムリソースを見つける場所を指定します。実行する特定のJavaがJAVA_HOMEの設定と一致していることを確認する必要があります。

(たとえば、JSPをコンパイルするために)自身のコピーを生成するJAVA_HOME\bin場合java.exeに正しいバージョンを取得するように、パスの早い段階で配置する必要がある場合もあります。


5

JAVA_HOMEある環境変数は

異なるオペレーティングシステムでセットアップする必要があります。以下のリンクをチェックしてください。

詳細については、こちらもご覧ください。


1
あなたはと互換性environmentがありますがpath、これはWindowsでもLinuxとまったく同じように使用されます。
Val

1
@valが指摘するだけで、それは彼の答えで修正されています。
barlop 14


5

@diraiによると、ここで JAVA_HOMEはJava自体ではなく、Apache Tomcatなどのサードパーティツールによって使用されています。ただし、ほとんどのアプリケーションはこの変数を設定しなくても機能しますが、予期しない動作をするアプリケーションもあります。


3

JAVA_HOME複数のJavaインストールのいずれかを実行できます。/usr/lib/jvm/java-1.8.0/bin/java 最初にPATH を使用している場合でもJAVA_HOME=/usr/lib/jvm/java-1.5.0、環境設定の問題として、プログラムを実行するためのデフォルトの「java」を代わりに使用できるようにしておくと便利です。これにより、プログラマーは、通常のシステムの場所にインストールされていなくても、必要なJavaを使用し、その代替バージョンとの互換性をテストまたは提供できます。また、Java自体のメジャーバージョンアップデートなど、インストールされている別のプログラムによってPATHでリセットされることに対して脆弱ではありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.