【发布时间】:2021-11-29 12:01:42
【问题描述】:
我正在尝试为一个相对较小的程序创建一个使用 jpackage 的本机安装程序。创建的应用映像大小约为 120 MB。这很奇怪,因为我之前使用过 jlink,而运行时映像过去只有 ~40 MB。经过一番挖掘,我在我的应用图像中找到了runtime/lib/modules,一个 90 MB 大小的文件。由于runtime/legal 列出了很多我不使用的东西(模块?),我认为 jpackage 包含了它不应该使用的东西,但我不确定。
注意:该程序不应该是模块化的。我的理解是,这仅在制作多部分程序或库时才有用。我使用 eclipse 自动创建的 module-info.java 来“欺骗” jlink 来创建运行时映像。
这是我用来创建应用图像的参数。
--type app-image
--name myapp
--dest target\appimg
--temp target\appimg-work
--input target\jar
--icon .\icon.ico
--main-jar target\jar\myapp.jar
--main-class com.msgprograms.myapp.AppMain
将一些文件复制到应用映像后,我使用另一个 jpackage 运行创建安装程序,这次使用这些参数:
--type msi
--app-version 0.0.1
--copyright "(C) msgprograms"
--description "some app"
--name myapp
--dest target
--temp target\installer-work
--vendor msg-programs
--app-image target\appimg\myapp
// omitted windows-specific args
为什么应用图片这么大,我该如何缩小?除了再次使程序模块化,使用 jlink 创建运行时映像,然后将其提供给 jpackage 之外,还有其他方法吗?
编辑:
我忘了提到该应用程序不使用 JavaFX。我在 jpackage 上找到的所有文章都可以,所以它们的帮助有限。
编辑 2:
试图通过--jlinkoptions "--add-modules java.desktop"变得聪明是行不通的,因为jlink option [--add-modules] is not permitted in --jlink-options
【问题讨论】:
-
FWIW,要找出运行时包含哪些模块,您可以使用
runtime/bin/java --list-modules -
谢谢,我不知道那个!