我创建了一个JavaFX应用程序,为此我将它捆绑为作为一个独立的独立应用程序,使用Java Runtime的私有副本。
但是这变成了我的应用程序大小166MB,其中146 MB的大小是jre。
如何减少应用程序的大小或者可以说捆绑运行时JRE的大小?
我读到somewhere有些文件在jre中是可选的,所以我尝试在删除这些文件后运行我的应用程序但无法运行该应用程序。
那么如何从我的应用程序的Runtime JRE中删除未使用的文件/文件夹/模块?
默认情况下,仅包含Java Runtime的一个子集。一些可选 排除很少使用的文件以减少包大小,例如 所有可执行文件。如果你需要一些不包括在内的东西 默认情况下,您需要将其作为后处理步骤复制。
所以默认情况下它不是在jre中添加所有文件,在这种情况下我的应用程序没有运行。 Application.jar工作正常,因为它使用的是系统jar。 所以我在后处理步骤中添加了所有重复文件。
由于
答案 0 :(得分:2)
Project Jigsaw似乎对此有所帮助。
但它最早会在Java 9中出现。
因此,据我所知,您无法使用JavaFX提供的缩减JRE大小运行您的应用程序。此外,您尝试了详细的here步骤,但仍然无法运行您的应用。
许多应用程序可以使用JRE的JavaFX包中可用的有限数量的类运行。也许您可以检查导致此问题的Java库。然后你可以探索这些库的替代品。最后,您需要测试这些替代库是否大于或小于JavaFX打包减少所提供的空间缩减。
答案 1 :(得分:0)
如果您正在使用JavaFX ant tasks汇编捆绑包,那么只需将basedir属性定义为platform元素中的空字符串,如下例所示:
<fx:platform basedir="">
<fx:jvmarg value="-Xmx768m" />
</fx:platform>
这将打包您的应用程序及其依赖项,但不打包JRE本身。
答案 2 :(得分:0)
不幸的是,Java 8无法删除未使用的文件。
要减小应用程序大小,您可以使用本机OS安装程序。
Windows Exe Installer的大小应该在50 MB左右 Mac OS X DMG安装程序约为60MB。