WindowsでのJDK/JREのインストールはOracle JDKを使っている人が多いと思いますが、オープンソース好きな私としてはOpenJDKを使いたい気持ちがあります。ただOpenJDKはOracleなどがビルドしたバイナリが置いてあるだけでOracle JDKのようにインストーラが付属しているわけではないので、エクスプローラーなどでjarファイルをダブルクリックで実行したい場合は、OpenJDKのバイナリとjarファイルの関連付けを手動で行う必要があります。
追記: Eclipse Adoptiumではインストーラが配布されており、jarファイルとの関連付けも行えるようです。
レジストリをいじる
- レジストリエディタで
HEKY_CLASSES_ROOT\.jarエントリにjarfileを設定する。 HEKY_CLASSES_ROOT\jarfileエントリにファイルタイプ名 (Executable Jar Fileとか) を設定する。HKEY_CLASSES_ROOT\jarfile\DefaultIconエントリにJavaバイナリのパス (今回は%JAVA_HOME%\bin\javaw.exe) を設定する。HEKY_CLASSES_ROOT\jarfile\shell\open\commandに実行コマンドを設定するのだが、このエントリはデフォルトのデータタイプのREG_SZだと環境変数が展開されないので、JAVA_HOMEなどの環境変数を使う場合はデータタイプをREG_EXPAND_SZにする必要がある。しかしこのタイプの既定値はレジストリエディタでは作成できないため、reg add HKCR\jarfile\shell\open\command /t REG_EXPAND_SZコマンドを使って空のREG_EXPAND_SZタイプの値を作成する。このときコマンドの実行結果は開いているレジストリエディタには自動反映されないので、一度エディタを再起動する必要がある。- 4で作成した
commandエントリに実行コマンド (今回は%JAVA_HOME%\bin\javaw.exe -jar "%1" %*) を設定する。
最終形
HKEY_CLASSES_ROOT
.jar
(Default) = jarfile
jarfile
(Default) = Executable Jar File
DefaultIcon
(Default) = %JAVA_HOME%\bin\javaw.exe
shell
open
command
(Default) = %JAVA_HOME%\bin\javaw.exe -jar "%1" %*
備考
- エクスプローラーでのファイルタイプ表示はタスクマネージャーでエクスプローラーを再起動すると反映する。
- 実行コマンドに環境変数を使わない場合はデフォルトの
REG_SZタイプで大丈夫。 DefaultIconエントリはREG_SZタイプでも環境変数は展開される模様。DefaultIconエントリを設定しない場合、commandエントリに設定した実行ファイルのアイコンが使われる。