1

我用 JDK 13 制作了一个 java 应用程序。我用 launch4j 创建了一个 exe 文件。但是没有人可以运行它,因为每个人都有 jre 1.8 版本并且它不会启动...我必须在安装中包含 java jdk 13 并设置 java_home 吗?

4

1 回答 1

2

TL;DR - 如果要分发 Java 13 应用程序,最好的选择是使用jlink创建可执行文件。这避免了用户必须安装任何JDK 或 JRE 来运行您的代码。


显然,用户无法使用 Java 8 JRE 或 JDK 运行您的应用程序。典型的 Java 13 应用程序将利用 Java 8 平台中不存在的功能。但即使它奏效了,免费的 Java 8 也将在 2021 年 4 月结束生命周期,届时:

  • 它将停止获取安全更新,使其(理论上如果不是实践的话)对您的客户使用不安全。

  • 您的客户将更难找到免费的 Java 8 二进制文件。(不过,向 Oracle 支付许可证也是一种选择。)

但是 Java 13 也存在问题。这将在 2020 年 9 月结束生命!此外,JRE 发行版不再可用。

最后,带有嵌入式 JRE 的应用程序安装程序总是有些问题:

  • 当 JRE 有安全补丁时,软件供应商很容易忘记更新安装程序。

  • 系统管理员很难将嵌入式 JRE 添加到自动更新的列表中。特别是如果他们允许最终用户自己安装应用程序。


最好的方法是执行以下操作:

  • 用于jlink为您支持的所有平台的应用程序创建可分发文件
  • 尽快更新到 Java 14
  • 每当发布带有安全修复的 Java 补丁版本时,请评估已修复的内容并(如果有必要)创建可分发的新版本供您的客户安装。

如果您不想使用jlink,另一种选择是开发您的代码以在 Java LTS 版本上运行。(当前的 LTS 版本是 Java 11,下一个版本是 Java 17,计划于 2021 年 9 月发布。)

  • 使用 LTS 版本将允许您将代码作为 JAR 文件发布。
  • 嵌入式 JRE 是个坏主意。看上面。
于 2020-05-10T08:26:26.557 回答