Boxこの広告は、90日以上更新していないブログに表示しています。Calendarの24日目です。9からjlinkコマンドが使えるようになり、カスタムJREを作れるようになりました。ところが、jlinkを使うにはモジュールアプリケーションでないとダメだというような間違った言説が流れているような気がします。jlinkで作るカスタムJREは非モジュールアプリケーションでも可能なんです!!!!ということで、JavaFXの非モジュールアプリでカスタムJREを作ってみましょう。サンプルは超簡単なラベルを表示するだけのものです。}}これをMavenでビルドするのは、以下のエントリーでも書いた通り(pom.xmlに記述した各種バージョンは新しいものにしてくださいね)。skrb.hatenablog.comもちろん、自分でビルドするのでも全然かまいません。ここでは、C:\hello\srcにソースファイルがあるとします。Files\Java\javafx-sdk-11.0.1"に配置してあります。.これで、helloディレクトリ直下にhello.jarができました。試しに実行してみましょう。net.javainthebox.hello.Helloこれでラベルだけのフレームが表示されるはずです。カスタムJREを作成するjlinkを使う前にjdepsを使わなくてはいけないような風潮がありますが、使っているモジュール(ここではJavaFXのモジュール)が明らかであれば、jdepsを使う必要はありません。非モジュールアプリケーションの場合、jdepsの--print-module-depsや--list-depsオプションは使用できません(JDKのモジュールしか表示されません)。jdepsを使うのであれば、オプションなしに使用します(もしくはサマリー表示の-s)。jdk.xml.domずらずらと出てきますが、重要なのは上の方の3行。hello.jarが直接使用しているのはjava.base、javafx.controls、javafx.graphicsモジュールの3つだということ。javafx.graphicsモジュールはjavafx.controlsモジュールが依存しているので、実質はjava.baseとjavafx.controlsだけでOKです。これが分かればjlinkでJREが作れます。いうか、javacやjavaで実行するときに--add-modulesでjavafx.controlsを加えているので、jdepsなど使わなくても何を使っているかは自明ですけどね。SDKのJARファイルよりJMODファイルを使う方がおススメです。JARでもいいのですが、JARファイルにはネイティブライブラリ(DLLやSO)が含まれていないので、別途コピーする必要があります。JMODファイルであればネイティブライブラリも含んでいるので、簡単です。Files\Java\javafx-sdk-11.0.1\mods"に置いてあるとします。jreこれで、jreディレクトリにJREができました。お分かりだろうとは思いますが、このJREにはアプリケーションのJARファイルは含まれていません。カスタムJREに含められるのはあくまでもモジュールだけです。この場合は標準のモジュールとJavaFXのモジュールで構成されています。他にモジュールで提供されているライブラリを使用しているのであれば、それもJREに含めることができます。逆にいうと、非モジュールのライブラリやアプリケーションJARはJREには含まれていないので、実行にはクラスパスで指定する必要があります。ここでは、クラスパスでhello.jarを指定しています。net.javainthebox.hello.HelloJREのモジュールにjavafx.controlsなどが含まれているので、--module-pathや--add-modulesなどのオプションは必要ありません。配布可能にするためにjreディレクトリにhello.jarもコピーしておきましょう。個のファイルをコピーしました。後は、実行に便利なようにバッチファイル、もしくはシェルスクリプトを作っておきましょう。hello.batを作ったとします。ファイルの内容は以下の1行だけ。net.javainthebox.hello.Hello試しに、hello.batで正しく実行できるかどうか試しておいてください。これで、jreディレクトリをそのまま配布することができます(ZIPファイルにするとか、ディレクトリ名を変えるとかはご自由に)。8はやめようという話をしました。JDKでJavaFXを使っていたみなさま、こんにちは。OpenJFX時代のアプリケーション配布ループアニメーション非モジュールJavaFXのアプリをJlinkで配布可能パッケージにする月別アーカイブはてなブログをはじめよう!skrbさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。