运行 图像如何由JDK 9 jlink 生成?
How do I run images generated by JDK 9 jlink?
我关注拼图quickstart here。我成功地 运行 给出了 jlink
命令:
jlink --module-path $JAVA_HOME/jmods:mlib --add-modules com.greetings --output greetingsapp
这会生成一个 "runtime image",它是一个展开的目录结构,如下所示:
~ tree -d greetingsapp
greetingsapp
├── bin
├── conf
│ └── security
│ └── policy
│ ├── limited
│ └── unlimited
├── include
│ └── darwin
├── legal
│ └── java.base
└── lib
├── jli
├── security
└── server
我如何运行这个?我期待的是二进制可执行文件,而不是展开的目录树。
bin
目录有一个java
和一个keytool
。我没有通过捆绑的 java
可执行文件看到任何 .jar 文件或 .class 文件到 运行。
至运行,执行此操作:
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
class 而无需 link 也使用 jshell
。
此外,jlink
是 linker 工具,可用于 link 一组模块及其传递依赖性,以创建自定义模块 运行-time image called as Modular Runtime Images which can be accomplished using the JMOD tool introduced with Java 9 modules.
正如评论中指出的和 回答的那样,如果您只是打算执行主要 class.
You can run your application by using the java binary in the bin
folder of the generated image, and using the command:
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
编辑:扩展+澄清以获得我正在寻找的答案。
我关注拼图quickstart here。我成功地 运行 给出了 jlink
命令:
jlink --module-path $JAVA_HOME/jmods:mlib --add-modules com.greetings --output greetingsapp
这会生成一个 "runtime image",它是一个展开的目录结构,如下所示:
~ tree -d greetingsapp
greetingsapp
├── bin
├── conf
│ └── security
│ └── policy
│ ├── limited
│ └── unlimited
├── include
│ └── darwin
├── legal
│ └── java.base
└── lib
├── jli
├── security
└── server
我如何运行这个?我期待的是二进制可执行文件,而不是展开的目录树。
bin
目录有一个java
和一个keytool
。我没有通过捆绑的 java
可执行文件看到任何 .jar 文件或 .class 文件到 运行。
至运行,执行此操作:
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
class 而无需 link 也使用 jshell
。
此外,jlink
是 linker 工具,可用于 link 一组模块及其传递依赖性,以创建自定义模块 运行-time image called as Modular Runtime Images which can be accomplished using the JMOD tool introduced with Java 9 modules.
正如评论中指出的和
You can run your application by using the java binary in the bin folder of the generated image, and using the command:
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
编辑:扩展+澄清以获得我正在寻找的答案。