java.exe の実行パスに環境変数 PATH の設定が反映されない(Windows)
したがって、下のように PATH の設定で
C:\>SET PATH
PATH=...;%SystemRoot%\system32;...%JAVA_HOME%\bin;
対策としては PATH=...;%SystemRoot%\system32;...%JAVA_HOME%\bin;
ところで、ある掲示板で次のような書き込みを見つけたが、最近のバージョンの Java については、この説明は不十分である。
まず「カレントバージョンのjava.exeを呼び出すだけ」とあるが、この実行形式ファイルはレジストリを参照して、カレントバージョンのjava.exeを呼び出すだけの動作を行っているようでした。(レジストリを書き換えると実行されるバージョンが変わる)
Javaの道 — 掲示板(パスについて)
C:\>comp C:\Java\jre7\bin\java.exe C:\Windows\System32\java.exe
C:\Java\jre7\bin\java.exe と C:\Windows\System32\java.exe を比較しています...
ファイルに違いはありません
また動作については、バージョン 1.7 を調べたところ以下のような仕様であった。
C:\Java\jre7\bin\java.exe と C:\Windows\System32\java.exe を比較しています...
ファイルに違いはありません
- 実行時、その埋め込まれているバージョン番号と、レジストリの
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\CurrentVersion
の値が比較され、両者のバージョン番号が異なる場合、エラーとなり実行が中断される。
- 一致している場合、そのバージョンの JVM を起動する。
という動作らしい。