java - 如何将 JFX/OpenFX 与 OpenJDK 8 结合使用

标签 java javafx java-8 openjfx

是否有任何 javafx/OpenJFX 依赖项可以直接在 pom 文件中使用,以便它与 OpenJDK 8 一起使用?或者任何适用于 OpenJDK 8 的解决方法(无需安装任何东西)?

我在 SO 上遇到了很多类似的问题,但是将 JFX/OpenFX 与 OpenJDK 8 一起使用的解决方案是在 Ubuntu 中安装 openjfx 软件包或使用 Oracle JDK 8。不幸的是我不能同时执行这两个操作。我正在使用 OpenJDK 8,需要在我的 swing 应用程序中使用 javafx/OpenJFX。 OpenJDK 在其 ext 文件夹中不包含 jfxrt.jar(如 Oracle JDK 8 的情况),并且 OpenJFX 的版本从 Java 9/10 开始。在尝试编译时我得到 类文件的版本错误为 54.0,应该是 52.0,这是预期的,因为它是使用 Java 10 构建的

任何线索都会非常有帮助。谢谢!

我已经浏览过以下链接

Why is JavaFX is not included in OpenJDK 8 on Ubuntu Wily (15.10)?

"class file has wrong version 54.0, should be 52.0" while trying to build JavaFX application

"class file has wrong version 54.0, should be 52.0" while compiling javaFX project

How to find out JavaFX version

最佳答案

Is there any javafx/OpenJFX dependency which can be used directly in the pom file so that it works with OpenJDK 8?

据我所知,没有。从 OpenJFX 11 开始,有 org.openjfx 工件,但它们不适用于 Java 8。(类文件版本将是错误的。)

Or any workaround (without installing anything) which works with OpenJDK 8?

我认为您需要从源代码构建您自己的 OpenJFX 副本,并(touch wood)将其与您的应用程序“打包”1

(以下内容纯粹基于阅读 OpenJFX 构建说明。我还没有尝试过。)


因此,如果您想构建一个独立的 OpenJFX 8 以与 OpenJDK 8 一起使用,那么您应该尝试 OpenJFX wiki 上的以下构建说明:

构建的结果(显然)是一个 ZIP 文件,旨在“覆盖”到 JRE 安装上。

您可以将其重新打包到 JAR 和 native 库中,然后将其包含在您的应用程序中。


对于 OpenJFX 9 及更高版本,构建说明位于此处:

显然,对于 N >= 9,OpenJFX 版本 N 应该支持 OpenJDK N 和 OpenJDK N - 1。因此,如果这是准确的,您应该能够为 OpenJDK 8 构建 OpenJFX 9。另一方面,构建指令讨论了生成模块,并且模块支持仅在 Java 9 及更高版本中可用。不过,它仍然值得一试(IMO)。


1 - 选项包括 1) 创建自定义 Debian 软件包(或 RPM)...类似于现有的 Ubuntu 软件包,2) 将相关类和 native 库合并到您的应用程序 JAR 中,或 3 )将它们添加到您的应用程序类路径和库加载路径中。您可能需要进行试验。

关于java - 如何将 JFX/OpenFX 与 OpenJDK 8 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67106521/

相关文章:

java - 如果值不是 Json 格式,则不反序列化值

java - 用java(数组)猜用户想过的数字

java - 执行操作后如何更改 fxml 文件?

java - 如何更正 TextField 中的希腊重音字符

java - 双冒号运算符 (::) 和(有效)最终

java - 方法引用属于什么类?

java - 来自 Java Web 服务器的内联 PDF 文件名的 HTTP header

java - 如何在其余代码之前执行一行代码?更改按钮上的文本

java - 在 TableView 中使用 PropertyValueFactory 中的值 - JavaFx

java - 功能接口(interface)作为功能引用