WindowsはJAVA_HOMEを無視します:JDKをデフォルトとして設定する方法は?


89

JREの代わりにJDKを使用するようにWindowsを説得するにはどうすればよいですか?

この質問は、以前、ここ、および他の場所で尋ねられました。

デフォルトのJavaインストール/ランタイム(Windows)を設定するにはどうすればよいですか?

問題は、Windowsが無視しJAVA_HOME、JDKbinディレクトリをパスの最初のエントリにしたという事実も無視することです。

java -versionコマンドラインから実行すると、JDK 1.6インストールを呼び出す代わりに、1.7JREが実行されます。

私の推測では、これは1.7に固有の問題であり、Windows7はレジストリで行うべきではないことを実行しています。

これを修正する方法についてのアイデアはありますか?

編集:おっと。上記の「パス」を意味するときに、「クラスパスの最初のエントリ」と書きました。ごめんなさい。

回答:


132

Windowsでは、java実行可能ファイルはWindowsレジストリを使用して、実行するJavaのデフォルトバージョンを見つけます。

java.exe実行するのコピーは、PATH環境変数を使用して検出されます。これを変更する手順を実行しない限り、デフォルトでは、コピーはWindowsディレクトリにあります。このコピーはJavaランタイムディレクトリにないため、レジストリを調べて見つけます。

したがって、レジストリを変更するか、必要なバージョンのJavaをのWindowsディレクトリの前に置く必要がありますPATH


11
OPはこちら。上記の私の編集を参照してください。うん、それはそれを解決した。2つの注意:最初に、Javaインストーラーが実際にjava.exeをWindows \ System32に配置したようです。これは私にとって驚くべきことです。次に、[コンピューター] / [プロパティ] / [システムの詳細設定] / [環境変数]でパスを変更する場合は、ユーザーパスではなく、システムパスを変更する必要があります。システムパスはそれ自体を最優先します。
2011年

2
また、Javaインストーラーが実際にjava.exeをWindows \ System32にドロップしているように見えるというuser237815の指摘を強調します。これは確かに私には直感的ではありませんでした。コンソールから「java-version」を確認した後で初めて、Windowsが以前の望ましくないバージョンではなくJDKインストールから必要なjava.exeを使用しているという快適なレベルを得ることができました。
ジョントブラー2012年

17
私の場合、Windows / System32フォルダー内のjava.exe、javaw.exe、およびjavaws.exeの名前を変更することで、この問題も解決されました。それから、そしてその時だけ、java
version

6
あなたは私の日を救った!PATHでWindowsの前にJDKに関連するエントリを移動すると、問題が解決しました。どうもありがとうございます!
the_dark_destructor 2013年

9
私はWindows10%JAVA_HOME%\binpath変数の最初の位置に置き、私に働きかけます。
ウェンデル2016年

30

Windows 8では、C:\ProgramData\Oracle\Java\javapath ディレクトリを削除することをお勧めします 。

パスから

それは私の問題を解決しました。


5
Windows 10では、C:\ Program Files(x86)\ Common Files \ Oracle \ Java \ javapathです。これは自動的にシステムパス変数に追加されます。それを削除し、カスタムパスの場所を設定します。
デクスター

1
上記のコメントは、Windows 10の場合に役立ちました
Saba Ahang

23

私もこの問題を抱えています。1.6を実行していますが、1.5で作業しているコードをビルドしたいと思います。JAVA_HOMEand PATH(ユーザーとシステムの両方)を無効に変更しました。

答えは1.6のインストーラが低下していることであるjava.exejavaw.exejavaws.exe私にWindows\System32フォルダ(Windows 7の)。

私はにそれらのファイルの名前を変更することによってそれを解決しjava_wrong.exejavaw_wrong.exe、とjavaws_wrong.exe。それを行った後でのみ、JAVA_HOMEとで定義されている正しいバージョンのJavaを取得しPATHます。このようにファイルの名前を変更したのは、簡単に元に戻せる方法でファイルが削除されたためです。

お役に立てれば!


10
名前を変更する代わりに、最初の値%JAVA_HOME%\ binとして指定するPATH変数を変更できます。そうすれば、最初の値になります
maxivis 2013年

1
@maxivisありがとう。問題は、Windows \ System32がJAVA_HOMEの前にあるようなPATH要素の順序にある​​可能性があると思います。リバーシブルで効果的に削除できるように、名前を変更しただけです。
インバーサス2017年

どういうわけか、パスにJAVA_HOMEを設定しても、私にはまったく機能しませんでした。これで実際に解決しました。
Guilherme Orioli 2018年

12

Windowsは何も無視しません。これはセットアップの問題です。Windowsは、提供されたものを使用するだけです。の特別な知識はありませんJAVA_HOME

CLASSPATHWindowsとも関係ありません。Windowsの場合、フォルダーの場所に展開されるのは環境変数だけです。

%PATH%環境変数を確認してください。これが、Windowsに次々と見つけさせている理由です。パス(リンクした投稿が言ったように)はを指して%JAVA_HOME%\bin;<remainder of path>いる必要があります。繰り返しになりますが、リンクした投稿は、バッチファイルを使用してこれを設定する方法を提供しました。

(他の人のために、誰がこれを知らないかもしれない:%パス%を検査する最も簡単な方法は、プロンプトと種類のコマンドを開くことですecho %PATH%。あなたはまた、上で右クリックしてそこに着くことができComputer、スタートメニューの右ペインにし、選択Properties、その後Advanced System Settings、およびtneEnvironmental Variablesボタン。)


@erickson:わかりました。ありがとう-私はそれを修正します。それでもWindowsとは何の関係もありませんが、それが私の答えのポイントでした。:)
ケンホワイト

理解したところ、私は新しい誤解が生まれるのではないかと心配していました。JavaはJAVA_HOMEWindowsよりも何も知りません。
エリクソン2011年

訂正に感謝します。私自身はJavaの人間ではないので(これまでの経験は限られています)、将来の参考のために知っておくとよいでしょう。
ケンホワイト

1
JAVA_HOMEJavaインストールのルートに設定する必要があります。パスにはが必要%JAVA_HOME%\bin;&lt;remainder of path%gt;です。そうでない場合、java、javacなどを「検索」しないことになります。もちろん、Windowsは実際にはPATH変数のみを調べますが、一部のJava関連ツールJAVA_HOMEは時々調べます。
エドウィンバック

@Edwin:欠落\binしているものも修正しました。ありがとう。
ケンホワイト

6

私も同じ問題を抱えていました。たくさんのJavaバージョンがインストールされており、1.6(C:\ jdk1.6.0_45_32 \ bin)を使用するパスを指定したにもかかわらず、何らかの理由でJava1.6の代わりにJava1.7が使用されていました。

Windowsが1.7ではなく1.6を使用するようにするには、使用したいJDKのパス(1.6)をPATH環境変数の最初のエントリに移動する必要がありました。

したがって、たとえば、以前のPATH環境変数は次のとおりでした。

C:\Program Files (x86);...<other entries>;C:\dev\ant181\bin;C:\jdk1.6.0_45_32\bin

そして、jdkを最初に移動した後、それは機能しました:

C:\jdk1.6.0_45_32\bin;C:\Program Files (x86);...<other entries>;C:\dev\ant181\bin

Java 1.7のWindowsインストーラーは、すでにPATHにある他のディレクトリにインストールしたので、指定されたカスタムPATHエントリC:\ jdk1.6.0_45_32 \ binの代わりに最初に使用されると思います。


ありがとう兄弟。パス変数の最初の要素としてJAVA_HOME \ binパスを移動すると、私の命が救われました。
オマールタスキ

4

私のCasein'Path'変数には、 ' C:\ProgramData\Oracle\Java\javapath;'のようなパラメーターが追加されました。この場所は持っていたjava.exejavaw.exeそしてjavaws.exe新た介してインストールされたJava 8からjdk.exeオラクルから。

パスがすでに持っ%JAVA_HOME%\binているパスからこのテキストを削除しました。

これで、変数'JAVA_HOME'が必要なJavaバージョンを制御しています。


4

ここに画像の説明を入力してくださいJDK8の後にJDK10をインストールし、「C:\ ProgramData \ Oracle \ Java \ javapath」のようなシステム環境変数セットパスにインストールしてから、このパスによるJavaバージョン制御を行ったとします。ここで設定されたjdk1.8パスでもJAVA_HOMEは無視されます。したがって、JAVA_HOMEパスを有効にするには、パスの「C:\ ProgramData \ Oracle \ Java \ javapath」を削除してください。


2

Java 7と8をインストールしていて、Java 7にリダイレクトしたいのですが、cmdプロンプトウィンドウのJavaバージョンにJava 8が表示さ
れます。Java7のbinディレクトリパスを追加しました(C:\ Program Files \ Java \ jdk1.7.0_10 \ bin)最後にPATH変数に変更しましたが、機能せず、Java 8が表示されます。そこで、Java 7パスをパス値の先頭に変更すると、機能しました。
新しいcmdプロンプトウィンドウを開き、Javaのバージョンを確認すると、Java7が表示されます。



1

私の場合、Java 7と8(両方ともx64)がインストールされていて、Java 7にリダイレクトしたいのですが、すべてがJava8を使用するように設定されています。JavaはPATH環境変数を使用します。

C:\ ProgramData \ Oracle \ Java \ javapath

そのフォルダーランタイムを探す最初のオプションとして(隠しフォルダーです)。このパスには、編集できない3つのシンボリックリンクが含まれています。

私のPCでは、PATH環境変数は次のようになります。

C:\ ProgramData \ Oracle \ Java \ javapath; C:\ Windows \ System32; C:\ Program Files \ Java \ jdk1.7.0_21 \ bin;

私の場合、次のようになります。

C:\ Windows \ System32; C:\ Program Files \ Java \ jdk1.7.0_21 \ bin;

Javaがシンボリックリンクを見つけられないように、シンボリックリンクを切り取って別の場所に貼り付ける必要がありました。後で復元できます。

JAVA_HOMEおよびJRE_HOME環境変数を目的のJavaフォルダーのランタイム(私の場合はJava 7)に設定した後、コマンド java -versionは目的のJavaランタイムを表示するはずです。レジストリをいじる必要はないことに注意してください。

Win7x64でテスト済み。


1

この問題は、システムにインストールされている以前のバージョンのJavaが原因である可能性があります。まず、環境変数を注意深く確認し、以前のバージョンのJAVAに関連するすべての環境変数を削除して、それらのパスを

C:\Program Files\Java\<your new jdk version>\bin

0

ここには追加の要素があります。Javaインストールが配置するように要求した場所に配置するJava実行可能ファイルに加えて、Windowsでは、Javaインストーラーはそれらの実行可能ファイルの一部のコピーもWindows system32ディレクトリに配置するため、すべてのJava実行可能ファイルを使用する可能性があります。最近インストールされました。


0

.BATファイルをWindowsサービスとして使用している場合に備えて、%JAVA_HOME%を正しいJavaバージョンを指すように変更した後、Windowsサービスをアンインストールして再インストールすることをお勧めします。


0

この問題にしばらく苦労して調査した後、私は最終的に次の手順に従って問題を解決することができました。

1)jdkバージョン12をインストールし
ます。2)システム変数に新しい変数を作成します
。3)JAVA_HOMEという名前を付け、jdkインストールパスを指定します
。4)この変数をパスに追加し、先頭に移動します。
5)C:\ Program Files(86)\ Common Files \ Oracle \ Java \ javapathに移動し、java.exeとjavaw.exeを、pathtojavajdk / binフォルダーの同じ名前の対応するファイルに置き換えます。

最後に、cmdで「java-version」を使用してJavaのデフォルトバージョンを確認しましたが、機能しました。

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