PowershellからJavaを起動時に"opening registry key"エラーが出る話
2024年8月9日
AdoptOpenJDK 11.0.3_7(hotspot)の 32bit 版を Windows 10 64bit 環境にインストールしたところ、インストール時にレジストリ書き込み機能のオプションを選択しても必要なレジストリが書かれない、という現象に遭遇したので自分用メモ。
症状としては、PATH は通っているからコマンドラインからは java コマンドが通るんだけど、Powershell から java を呼び出すとこんなエラーが出る。
Error: opening registry key 'Software\JavaSoft\Java Runtime Environment' Error: could not find java.dll Error: Could not find Java SE Runtime Environment.
このエラーが出る場合は、エラー内容のとおりレジストリキーが書かれていない。
対処としては、64bit 版の AdoptOpenJDK をインストールして、その際、レジストリキーも書かせるのがいい。
ちなみにその時にインストーラーが書いてくれたレジストリのエクスポート結果はこんな感じ。
[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft] [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JDK] "CurrentVersion"="11" [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JDK\11] "JavaHome"="C:\\Program Files\\AdoptOpenJDK\\jdk-11.0.3.7-hotspot\\" [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JDK\11.0.3.7] "JavaHome"="C:\\Program Files\\AdoptOpenJDK\\jdk-11.0.3.7-hotspot\\"
これをコピペして「.reg」ファイルに保存して、必要ならレジストリに書いてもいいかもしれない。
なんとなーく、インストール先ディレクトリが "Program Files (x86)" になると、インストーラーがちゃんと動いてないんじゃ?という気もするけど詳細は不明。