OpenJdK 8 - 无法编译包 javafx.util 不存在

OpenJdK 8 - Can't compile package javafx.util does not exist

Linux Mint 20.3
   os.name = Linux
   os.arch = amd64
   os.version = 5.13.0-25-generic



 Java : 
    openjdk version "1.8.0_322"
    OpenJDK Runtime Environment (build 1.8.0_322-b06)
    OpenJDK 64-Bit Server VM (build 25.322-b06, mixed mode)

Maven 3.8.3

我通过 Maven 构建我的 java 项目。

当我尝试通过 OpenJdk 1.8.0_322 编译我的 java 项目时:

  package com.myproject;
    
    import java.util.Collection;
    import java.util.List;
    import java.util.Map;
    
    
    import javafx.util.Pair; //  here error
    
    @SuppressWarnings("rawtypes")
    public interface SomeMyInterface {
      // some code here
      Map<Integer, List<Pair<Integer,Integer>>> findAllMgIdsAssociatedNsPairs();
    }

我收到错误:

[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /SomeMyInterface.java:[10,19] package javafx.util does not exist

P.S。如果我使用来自 Oraclejdk1.8.0_202 项目成功编译!

P.P.S。项目必须编译java 8. 客户要求。

tl;博士

或者:

    在包含 OpenJFX 库的 JDK 上
  • Develop/deploy。
  • OpenJFX 库添加到您的 Java 项目。

详情

JavaFX 从未成为 Java SE 的官方部分。

有一段时间 Oracle 将他们的 JavaFX 库连同他们的 JDK。他们后来停止了捆绑销售。

您需要将 JavaFX 的实现添加到您的项目中。您会在 Gluon 和 Oracle 的 OpenJFX. This open-source project is housed as a subproject on the OpenJDK 项目 co-led 中找到这样的实现。

使用您选择的依赖项管理器,例如 Apache Maven 或 Gradle,将 OpenJFX 库添加到您的项目中。下面我放置了 OpenJFX 11 到 17 的 Maven 存储库链接,但这些链接需要 Java 11+。我还没有找到 JavaFX/OpenJFX 的 Java 8.

的任何 Maven 回购链接

或者,您可以在捆绑了 OpenJFX 库的 JDK 上进行开发和部署。至少有两家供应商提供带有此类捆绑包的 JDK 产品版本:

  • ZuluFX 来自 Azul Systems
    • 参见 this downloads list for Java 8 on macOS,Linux,和 Windows。请注意下载列表顶部的 Java Package 筛选字段。
  • LibericaFX 作者:BellSoft
    • Downloads page 上,为捆绑 OpenJFX 的版本选择 Full 选项。适用于 macOS 上的 Java 8、Linux 和 Windows.

如果可能的话,考虑从 Java8 开始。我建议转到 Java、11 和 17 的较新 LTS 版本,以及 OpenJFX 的最新 LTS 版本 17,后者需要 Java 11 或更高版本。 Java 和 JavaFX 近年来都发生了很大的变化。此演变包括 jlink and jpackage 工具,可将您的 JavaFX 应用程序打包为单个“double-clickable”应用程序,其中包含 运行 所需的 JDK/JVM 的最少部分特定平台。

版本

对于 OpenJFX 版本 11 到 17,Java 11 或更高版本是 required/recommended。参见 Release Notes

OpenJFX 11 到 18 的 Maven 链接可以是 found here,在其他 Maven 存储库上也是如此。

OpenJFX 版本 14 到 18 的源代码可以是 found on GitHub site for OpenJDK. Source code for older versions 2, 8, 9, and 10 can be found on the read-only Mercurial OpenJDK 的存储库。