gpt4 book ai didi

java - jpackage 创建 2 个 JRE 副本

转载 作者:行者123 更新时间:2023-12-02 09:19:38 31 4
gpt4 key购买 nike

我使用jpackage(带有 JDK 14)来创建独立的 JavaFX 应用程序。

jpackage 的输出看起来很奇怪,它由两个相同的 JRE 副本以及 app 文件夹中的所有文件组成,除了 App.cfg > 文件,可以毫无问题地删除。

jpackage可以不生成不必要的文件吗?

<小时/>

我有:

我有一个从 Maven 原型(prototype) org.openjfx:javafx-archetype-simple:0.0.3 创建的简单项目。我刚刚添加了 maven-shade-plugin 用于创建具有依赖项的 jar 和一个简单的启动类(例如 NewMain class here )。

我愿意:

mvn package
mvn javafx:jlink
jpackage --package-type app-image --dest targetApp --name App --runtime-image target/image --main-jar testApp-1.0-SNAPSHOT.jar --input target

结果我有两个带有 JRE 的文件夹(完全相同):

  • targetApp\App\runtime
  • targetApp\App\app\image

并且 targetApp\App\app 中的所有文件(和文件夹)(JRE (~53 MB)、Jar (~9 MB)、类...)都可以安全删除,除了 App.cfg文件。

删除这些文件后,我运行 targetApp\App\App.exe 并且它工作正常。

删除会将 App 的大小从 118 MB 减少到 56 MB。

<小时/>

另一个问题:我使用 Windows,jpackage 生成 Windows 的结果(很多 dll 文件和 exe),我可以在 Windows 中为 Mac 和 Linux 创建独立的应用程序吗?

最佳答案

您得到这个结果是因为您已经创建了一个 uber-jar,其中包含除了您通过 --input target 指定的内容之外的所有内容,根据文档,它具有以下效果。

All files in the input directory will be packaged into the
application image.

尝试仅删除选项 --input target 是否有效,或者不创建 uber-jar。相反,使用 maven-dependency-plugin 将所有依赖项复制到单个文件夹中,例如 target/libs,然后显式指定 --input target/libs

你的第二个问题:如果这是您的问题,您无法为其他目标交叉创建应用程序。

关于java - jpackage 创建 2 个 JRE 副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58777228/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com