web-dev-qa-db-ja.com

JDK 9 jlinkによって生成されたイメージを実行するにはどうすればよいですか?

私はジグソーパズル ここからクイックスタート に従います。私は与えられたjlinkコマンドを正常に実行しました:

jlink --module-path $Java_HOME/jmods:mlib --add-modules com.greetings --output greetingsapp

これにより、次のような展開されたディレクトリ構造である「ランタイムイメージ」が生成されます。

~ tree -d greetingsapp
greetingsapp
├── bin
├── conf
│   └── security
│       └── policy
│           ├── limited
│           └── unlimited
├── include
│   └── darwin
├── legal
│   └── Java.base
└── lib
    ├── jli
    ├── security
    └── server

これをどのように実行しますか?展開されたディレクトリツリーではなく、バイナリ実行可能ファイルを期待していました。

binディレクトリには、Javakeytoolがあります。バンドルされているJava実行可能ファイルを介して実行する.jarファイルまたは.classファイルが見つかりません。

14
clay

実行するには、次のようにします。

greetingsapp/bin/Java -m com.greetings/com.greetings.Main 

または、これを行うランチャースクリプトをjlinkにビルドさせることができます

jlink --module-path $Java_HOME/jmods:mlib --add-modules com.greetings --output greetingsapp --launcher launch=com.greetings/com.greetings.Main

次に実行します:

greetingsapp/bin/launcher

同じドキュメントを作成します:-

$ Java -p mods -m com.greetings/com.greetings.Main

Mainを使用してリンクすることなく、モジュール構造からjshellクラスを実行するために実行することもできます。


また、jlinkはリンカーツールであり、一連のモジュールをそれらの推移的な依存関係とともにリンクして、と呼ばれるカスタムモジュラーランタイムイメージを作成するために使用できます モジュール式ランタイムイメージこれは、Java 9モジュールで導入された JMODツール を使用して実現できます。コメントで指摘され、 @ Jorn メインクラスを実行するだけの場合。

生成されたイメージのbinフォルダーにあるJavaバイナリーを使用し、次のコマンドを使用することにより、アプリケーションを実行できます。

Java com.greetings.Main

一方、さらにモジュールとして使用するJMODファイルを作成する例は次のとおりです。

jmod create --class-path mods/com.greetings --cmds commands
  --config configfiles --header-files src/h --libs lib
  --main-class com.greetings.Main --man-pages man --module-version 1.0
  --os-Arch "x86_x64" --os-name "Mac OS X"
  --os-version "10.10.5" greetingsmod 

[〜#〜] edit [〜#〜]:展開+明確にして、私が探していた答えを得ました。

11
Naman