ユーザーの環境変数でjdk11にJava_HOME
を定義しましたが、PATH
には%Java_HOME%/bin
が含まれています。
Java_HOME
をjdk8に変更して、コマンドプロンプト(cmd
)で一時的にjdk8に切り替えたいのですが、path
またはJava -version
の値は変更されませんcmdの現在のインスタンスでは変更されません。
PS-混乱を避けるために、c:\ Program Data\Oracle\Java ..ファイルを削除しました
cmd
の現在のインスタンスで変更されないcmd
シェルが親プロセスから環境を継承するため、変更を有効にするにはcmd
を再起動する必要があります。
次のように、一連のバッチファイルを使用します。
Java開発者である私は、常にコードをコンパイルしてさまざまなJavaバージョンでテストします。ただし、バージョンを切り替えることは大きな問題です。そのため、簡単にこれを行うには、次のバッチファイルを作成し、コマンドラインを開いたディレクトリまたはSYSTEM PATHに配置する必要があります。これらのファイルを作成するには、お気に入りのテキストエディターを使用できます。
jdk14.bat
@echo off echo Setting Java_HOME set Java_HOME=C:\j2sdk1.4.2_12 echo setting PATH set PATH=C:\j2sdk1.4.2_12\bin;%PATH% echo Display Java version Java -version
jdk15.bat
@echo off echo Setting Java_HOME set Java_HOME=C:\Program Files\Java\jdk1.5.0_12 echo setting PATH set PATH=C:\Program Files\Java\jdk1.5.0_12\bin;%PATH% echo Display Java version Java -version
jdk16.bat
@echo off echo Setting Java_HOME set Java_HOME=C:\Program Files\Java\jdk1.6.0_11 echo setting PATH set PATH=C:\Program Files\Java\jdk1.6.0_11\bin;%PATH% echo Display Java version Java -version
Javaインストールに従って、バッチファイルで適切な
Java_HOME
値を割り当ててください。Javaバージョンを切り替える場合は、それぞれのバッチファイルを実行すると完了です。注:
Java_HOME
およびJavaへのパスは常にまったく同じバージョンのJDK
を参照する必要があります。それらを混同すると、予測できないことが起こります!
これは、PATH
への代入時にPATH
の変数参照が展開され、それ以降の変更は無視され、元の値への参照が失われるためです。これは、変数への参照を作成するのではなく、変数の値のコピーを作成するようなものです。
set Java_HOME=C:\dir1
PATH=%Java_HOME%
set Java_HOME=C:\dir2
PATH
これは、C:\dir1
ではなくJava_HOME
(割り当て時の%Java_HOME%
の値)を出力します。
Java_HOME
への変更後に呼び出すには、次のようなスクリプトが必要です。
PATH=%Java_HOME%;C:\Windows\system32;C:\Windows;...