【问题标题】:How to run java11 and jfx11 application on jre1.8如何在 jre1.8 上运行 java 11 和 jfx 11 应用程序
【发布时间】:2020-08-19 22:37:53
【问题描述】:

我是一名计算机专业的学生,​​在公司实习期间,使用 JavaFX、maven 和 apache.poi 开发了一个小型 Java 软件。

信息:该应用程序在 Intellij 上运行并完美构建,我的问题涉及我在项目完成后生成的 *.jar

我第一次使用 JDK 14 和 JFX14,但是在执行时 (java –jar xx.jar) 我有一个错误说我正在用 JAVA 58 (JAVA 14) 编译程序并且我正在使用 JRE 52(Java 8)。

所以我修改了项目以使用 JDK 11 和 JFX 11 进行编译,现在我遇到同样的错误,告诉我我正在用 JAVA 55 (JAVA 11) 编译程序并且我使用的是 JRE 52 (JAVA 8) .

错误来自我的电脑默认使用jre1.8.0_251。

所以我尝试以这种方式启动程序“path_to_jdk11\bin\java.exe”-jar xxx.jar,它可以工作。

这就是我的问题:

大多数用户使用 Oracle 网站上提供的 JAVA 版本,即 jre1.8.0_251,它是可用的最新版本。在我的程序之外需要 Java 11,我想它没有部署在公司 PC 上。 我试图将我的项目移植到 java 8,但 Maven 和 module.info.java 出现错误。

您对部署*.jar 或将其部署在.exe 中以便它可以与拥有jre1.8.0_251 的用户一起运行有什么技巧吗?

恭敬

【问题讨论】:

  • 您唯一的可能是将项目完全移植到 java 8 或使用 java 11 构建它并包含一个运行程序的 jre。 Java 11 出现了 jlink,这正是为此目的。它使用您的程序需要的组件构建自定义 jre
  • 我尝试使用 Jlink,但我在项目中使用 apache.poi,所以当我运行 javafx:jlink 时出现此错误:自动模块无法与 jlink 一起使用:来自 xxx 的 poi

标签: java maven javafx deployment javafx-11


【解决方案1】:

不要试图建立一个胖罐子。它不适用于现代 Java。而是构建一个真正的安装程序。这可以使用 JDK 14+ 轻松完成。只需遵循本教程https://github.com/dlemmermann/JPackageScriptFX,它涵盖了您需要的一切。这使用来自 JDK 14 的 jpackage 和它的一些其他工具,并且也适用于非模块化项目。安装 JDK 14 时,请确保正确设置 JAVA_HOME 和 PATH,以便所有工具都能找到正确的 Java 版本进行构建。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-29
    • 2019-05-29
    • 2020-06-19
    • 2021-11-24
    • 2020-06-05
    • 2019-11-21
    • 2020-09-08
    • 2019-11-16
    相关资源
    最近更新 更多