当我们创建jlink运行时映像时,我们可以使用诸如‘--条形-调试’,‘-压缩’,'2',‘-无头-文件’,‘-无手册页’这样的标记,创建一个大约45 as的分发文件夹。
如果我们想要使用javapackager,例如创建一个.DMG文件,我们如何进行类似的压缩?因为这些标记对于javapackager来说是不可维护的。没有它们,最后的包大约是100 my,失去了很多java9模块化的优势,所以我的问题是,是否可以在jlink创建的JRE运行时映像中使用javapackager。
谢谢
发布于 2017-11-15 16:07:22
在回答我自己的问题时,我们可以把两者结合起来:
例如,对于MacOSX:
1)使用jlink生成一个运行时dist,如果使用压缩标记,这将创建一个大约50 if的lib文件夹。
2)使用javapackager生成MacOSX.app,这个.app将附带一个大约98 lib的运行时库文件夹。
3)简单地替换它们,右键单击MacOSX.app->“显示包内容”,然后转到Plugins/Java.Runtime/Content/Home/并将lib文件夹替换为jLink生成的文件夹。
这样你就有了一个独立的Java应用程序,它只有50 to,而不是100 to,这要归功于漂亮的Java9模块。
使用javapackager完成所有这些都很酷,如果可能我无法找到方法,我建议使用gradle这样的方法来执行所有这些过程,并使用1命令。
发布于 2018-03-19 00:49:31
您可以将一个选项传递给JDK 9 javapackager,该选项被传递给jlink进程。
javapackager选项以控制jlink
-BjlinkOptions=compress=2
or
-BjlinkOptions=strip-debug我不知道如何同时通过。
-BjlinkOptions="compress=2 strip-debug"导致java.lang.IllegalArgumentException
-BjlinkOptions="strip-debug compress=2"具有与-BjlinkOptions=strip-debug相同的结果
当选项-BjlinkOptions=...多次传递给javapackager时,只考虑最后一个选项。
在这里,jlink选项no-header-files和no-man-pages似乎无效,因为它们在-BjlinkOptions=之后传递时会导致NPE。
https://stackoverflow.com/questions/47287429
复制相似问题