【问题标题】:How to use JFX/OpenFX with OpenJDK 8如何在 OpenJDK 8 中使用 JFX/OpenFX
【发布时间】:2021-07-10 09:01:05
【问题描述】:

是否有任何 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 开始。在尝试编译时,我得到 class file has wrong version 54.0, should be 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

【问题讨论】:

    标签: java javafx java-8 openjfx


    【解决方案1】:

    是否有任何 javafx/OpenJFX 依赖项可以直接在 pom 文件中使用,以便与 OpenJDK 8 一起使用?

    AFAIK,不。从 OpenJFX 11 开始有 org.openjfx 工件,但它们不适用于 Java 8。(类文件版本会错误。)

    或者任何适用于 OpenJDK 8 的解决方法(无需安装任何东西)?

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

    (以下纯属阅读OpenJFX构建说明,我没有尝试过。)


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

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

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


    对于 OpenJFX 9 及更高版本,构建说明如下:

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


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

    【讨论】:

    • 谢谢斯蒂芬。我会试试这个,让你知道它是否有效!再次感谢。
    【解决方案2】:

    您为什么不直接使用 https://bell-sw.com/pages/downloads/#/java-8-lts 并下载完整的 Java 版本(非标准)。它应该已经包含 JavaFX,并且是众多 OpenJDK 8 版本之一。

    【讨论】:

    • 嗯,使用哪个 JDK 不在我的控制范围内。这是在组织级别决定的,我们只能选择使用特定版本的 OpenJDK (openjdk-1.8.0.272)
    • “Liberica Full JDK 8u282+8 x86 64 bit for Linux”是 OpenJDK 的一个实例。谁告诉你必须选择一个特定的提供商(反正你在帖子中没有提到)
    • OpenJDK 的“一个实例”在我的系统中不可用,我无法安装它。如果您知道通过 OpenJDK 8 运行它的方法,那将会很有帮助。
    • 你到底在说什么?您必须区分 OpenJDK 的开源和不同供应商从这些源构建的各种发行版。如果你说“让这个通过 OpenJDK 8 运行”,这句话是没有意义的,因为它没有指定一个发行版。 Liberica、Zulu、Adoptium ......都是 OpenJDK 并满足您的标准。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 2021-02-27
    • 2019-10-03
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多