torutkのブログ

ソフトウェア・エンジニアのブログ

JDK 9 Windows版のレジストリが変更になっている

Windows版のOracle JDKは、JDKをインストールしたディレクトリをレジストリに登録しています。
JDK 8u92 Windows 64bit版をインストールすると、次のレジストリが登録されます。

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit
  +-- CurrentVersion : 1.8

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\1.8
  +-- JavaHome : C:\Program Files\Java\jdk1.8.0_92
  +-- MicroVersion : 0

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\1.8.0_92
  +-- JavaHome : C:\Program Files\Java\jdk1.8.0_92
  +-- MicroVersion : 0

JDK 9 Early Access b125 Windows 64bit版をインストールすると、次のレジストリが登録されました。

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JDK
  +-- CurrentVersion : 9

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JDK\9
  +-- JavaHome : C:\Program Files\Java\jdk-9

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JDK\9\MSI
  +-- INSTALLDIR : C:\Program Files\Java\jdk-9
  +-- NOSTARTMENU : 0

これまでは、HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit のCurrentVersionを調べてJavaHomeを取り出すことで、そのマシンにインストールされているJDKの最新版のパスを得ることができました。

JDK 9からは、レジストリのキーが変更されるようなので、そのマシンにインストールされているJDKの最新版のパスを取得するには、JDK 9のキーとJDK 8以前のキーと2つを調べる必要があります。

レジストリキーの活用例として、WindowsのコマンドプロンプトでJDKのコマンドを実行するために、PATH等の環境変数を設定するバッチファイルを作成し、その中でレジストリを調べています。Githubのgistにバッチファイルをアップしました(JDK 9対応)。
Setting oracle jdk path using registory for Windows command prompt · GitHub