0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

openJDKをインストールしているwindowsでlaunch4jでexe化したJavaアプリケーションが動かない時の対応

Posted at

Oracle-Javaのライセンスがうんたらかんたら、ということなのでいろんなOpenJDKディストリを使っている。
仕事の関係上、クライアント型アプリを作ることもあり、(割と簡単に)Mac・Win対応できるということでJavaで作っていた。
jarファイルのままだと関連付けの問題から使えない人が出てきたりするので大変、exeできるということでlaunch4jでexeにラップさせていたが、
それだと特定のOpenJDKでは起動しないことがわかった。
以下はその対処法。
(なお、レジストリを編集する箇所があるので例によってトラブルに責任は負えません)

lanunch4jで起動できるOpenJDKディストリ

・Amazon Coretto
・AdoptOpenJDK

けどAmazonCorettoはJavaFXのメディアサポートがまだ実装されていなかったり、Adoptの方はJavaFXがないこともあって、LibericaOpenJDKを使っている。
このLibericaはlaunch4jが動かせない。
(試してないけどzuru OpenJDKもだめみたい)

Libericaがインストールされている状態では

・JAVA_HOMEは設定されている。
・PATHにも追加されているので、コマンドプロンプトなどからjavaコマンドは使用可能
・ただしlaunch4jは「JDKがない」と言われて起動できない。

OracleJDKの公式ドキュメントより

https://docs.oracle.com/javase/jp/9/install/installation-jdk-and-jre-microsoft-windows-platforms.htm#JSJIG-GUID-47C269A3-5220-412F-9E31-4B8C37A82BFB
通常のJDKインストーラではWindowsのレジストリキーを書き込む。
launch4jは上記のレジストリキーを読み込み判断する方式のため、OpenJDKディストリによってはレジストリキーを書き込まないため動かない。

レジストリキー追加

お約束:レジストリ変更の前は念の為バックアップとりましょう。
いろいろ試したところ、このキーを追加すれば起動できた。
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.8
ということで、追加のコマンド(管理者モードのコマンドプロンプトから)

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment" /v CurrentVersion /t REG_SZ /d "1.8.0_252"
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.8" /v JavaHome /t REG_SZ /d "%JAVA_HOME%\jre"

一行目の"1.8.0_252"は適宜Javaのバージョンに書き換える。またパスの「1.8」の部分も同様にバージョンに合わせる。

(もしかしたらこれもいるかも)
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.8.0_252"

余談

jarがダブルクリックで立ち上がらない場合は、
HKEY_CLASSES_ROOT¥.jar
のレジストリキーを削除して、JREを再インストールするとうまくいくときがある。

参考にしたURL

https://sourceforge.net/p/launch4j/feature-requests/103/
https://github.com/AdoptOpenJDK/openjdk-installer/issues/64

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?