针对 Java 8 构建的 JavaFX 应用程序 - 如何在 Java 11 上保持运行?

标签 javafx java-11 javafx-11

我最近了解到 JavaFX 未包含在 Java 11 中,并对其如何工作有疑问。

现在,我维护一个面向 Java 8 的应用程序,主要使用 Swing,但也使用一些 JavaFX,并且拥有非开发人员用户群。其中一些用户使用的是较旧的操作系统,因此我想继续以 Java 8 为目标。

但是,Java 11 将于下个月发布,我担心一些使用较新操作系统的用户将升级到 Java 11,并且应用程序的 JavaFX 组件将停止工作。

那么,如果您希望继续以 Java 8 为目标,但 JavaFX 对于那些安装 JRE 11 的人来说又适用,那么最好的前进道路是什么?我看到了几个选项,但没有一个是完美的:

  • 需要单独安装 JavaFX。如果是这样,我需要知道哪个版本 - 最有可能是 https://gluonhq.com/products/javafx/ 中特定于操作系统的 SDK ?不太理想,因为这是另一个安装,但我已经为那些没有安装 Java 的人提供了安装说明。
  • 捆绑 JRE 和 JavaFX,并具有强制使用该 JRE 的启动脚本。这并不理想,因为下载大小会急剧增加,并且需要每个操作系统单独下载,但我之前制作过捆绑 JRE 的发行版。
  • 如果检测到 Java 11+,则使用 Swing 而不是 JavaFX。我可能会这样做,因为我的应用程序最初是 Swing,并且只迁移了一小部分,但它也没有吸引力,因为我添加的较新的、特定于 JavaFX 的功能将会丢失。
  • 尝试将 JavaFX 运行时包含为 .jar 文件并手动将其加载到类路径中(也许仅在检测到 Java 11+ 时?)

我很好奇你的想法是什么,以及是否有我忽略的更好的选择。当我采用 JavaFX 时,我没有预料到有一天它会从 JRE 中删除!

最佳答案

在我看来,要求用户在其客户端计算机上安装 Java 的日子已经结束了。更好的解决方案是创建一个依赖于操作系统的安装程序,它将所有内容与应用程序捆绑在一起。我还想知道这样的 bundle 的大小是否仍然很重要。从 YouTube 下载的单个视频可能要大得多。相反,通过捆绑,您可以省去很多麻烦。

关于针对 Java 8 构建的 JavaFX 应用程序 - 如何在 Java 11 上保持运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52124877/

相关文章:

java - 创建每个值都指向字符串列表的枚举时出错

java - 这个fxml错误代码在JavaFx中意味着什么

java - 矩形的递归碰撞检测不太有效

java - 路径转换绑定(bind)

java - 将 Spring Boot 应用程序(使用 javax.persistence)升级到 JDK 11

java - JDK 11.javax.net.ssl.SSLPeerUnverifiedException : peer not authenticated

java - FXMLLoader.load() 在 java 9 之前的风格中工作正常,但在模块中失败

java - 在模块路径上使用 OpenJFX 11 JMODS 在 JDK 11 上运行 javafx 示例

JavaFX场景生成器: Creating a new scene or just making changes on a specific element?

css - 如何使用 CSS 设置两个相邻 TableView 的边框样式,使它们在 JavaFX 11 (OpenJFX 11) 中看起来像是一个 TableView