Java部署指南/Self-Contained Application Packaging中的Example 2-1上的javapackager说明指出,-deploy命令中需要一个jar文件。
如果我使用模块化jar,我会得到这个错误消息:
异常: java.lang.Exception:错误: srcfiles: dist\tcdmod.jar中不允许使用模块。
如果我使用等效的非模块化jar,结果包将包含完整的运行时。但我想使用我在/dist文件夹中使用jlink时缩短的运行时间。
javapackager命令可以与jlink生成的运行时一起部署吗?多么?
标题为“定制JRE”的一节没有提到javapackager命令。
下面的“为模块化应用程序打包”一节有以下一行:
使用Java Packager工具打包模块化应用程序和非模块化应用程序。
Java Packager工具与javapackager不同吗?本节中没有使用javapackager的示例。
下面是我使用的javapacker命令:
javapackager -deploy -native -outdir packages -outfile ToneCircleDrone -srcdir dist -srcfiles tcdplain.jar -appclass com.adonax.tanpura.TCDLaunch -name "ToneCircleDrone" -title "ToneCircleDrone test"javapackager文档中的说明没有提到使用jlink运行时的场景。有一个捆绑包参数-Bruntime,但它仅用于指向系统默认设置AFAIK之外的已安装运行时。
发布于 2018-05-31 05:50:09
JDK9及更高版本提供的javapackager使用jlink生成jre镜像:
对于自包含的应用程序,Java Packager For JDK9将应用程序与
工具生成的JDK9运行时映像打包在一起。要将JDK 8或JDK 7 JRE打包到应用程序中,请使用JDK 8 Java Packager。
https://docs.oracle.com/javase/9/tools/javapackager.htm#JSWOR719
您甚至可以使用-BjlinkOptions=<options>将参数传递给jlink
此外,-Bruntime仅对使用-deploy -native jnlp部署的包有效
要编译模块化应用程序,请使用--module-path <dir>而不是-srcdir,然后使用-m <module name>指定主模块。
编辑:虽然没有关于-BjlinkOptions的文档,但它存在于javapackager源代码中
jdk.packager/jdk.packager.internal.legacy.JLinkBundlerHelper
示例用法:-BjlinkOptions=compress=2将使javapackager运行带有Zip标志的jlink,生成带有Zip级别压缩的--compress=2图像。
此外,使用-Bverbose=true标志运行javapackager将确切地显示哪些参数正在传递给jlink,并在输出中显示如下所示的一行:
条带调试={
- userArguments =1 compress=2}
https://stackoverflow.com/questions/50361280
复制相似问题