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
エントリに設定した実行ファイルのアイコンが使われる。