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
附注如果我使用来自Oracle的jdk1.8.0_202
,项目成功编译!
P.P.S。该项目必须由java 8编译。这是客户的要求。
最佳答案
tl;博士
或者:
- 在包含 OpenJFX 库的 JDK 上进行开发/部署。
- 将OpenJFX库添加到您的Java项目中。
详细信息
JavaFX从未成为 Java SE 的正式组成部分。
有一段时间,Oracle 将其 JavaFX 库与 JDK 一起包含在内。他们后来停止捆绑销售。
您需要将 JavaFX 的实现添加到您的项目中。你会在 OpenJFX 中找到这样的实现。该开源项目位于 a subproject on the OpenJDK该项目由 Gluon 和 Oracle 共同领导。
使用您选择的依赖项管理器(例如 Apache Maven 或 Gradle)将 OpenJFX 库添加到您的项目中。下面我放置了 OpenJFX 11 到 17 的 Maven 存储库链接,但这些链接需要 Java 11+。我没有找到任何 JavaFX/OpenJFX for Java 8 的 Maven 存储库链接。
或者,您可以在捆绑 OpenJFX 库的 JDK 上进行开发并部署到该 JDK。至少有两家供应商提供带有此类 bundle 的 JDK 产品版本:
- ZuluFX 作者:Azul Systems
- 参见this downloads list适用于 macOS、Linux 和 Windows 上的 Java 8。请注意下载列表顶部的Java Package过滤器字段。
- LibericaFX 由 BellSoft 提供
- 关于Downloads page ,为捆绑 OpenJFX 的版本选择完整选项。适用于 macOS、Linux 和 Windows 上的 Java 8。
如果可能的话,考虑放弃 Java 8。我建议迁移到 Java 的最新 LTS 版本 11 和 17,以及 OpenJFX 的最新 LTS 版本 17,它需要 Java 11 或更高版本。近年来,Java 和 JavaFX 都取得了长足的发展。此演变包括 jlink和 jpackage用于将 JavaFX 应用程序打包为单个“可双击”应用程序的工具,其中包含在特定平台上运行所需的 JDK/JVM 的最少部分。
版本
对于 OpenJFX 版本 11 到 17,需要/建议使用 Java 11 或更高版本。请参阅Release Notes .
OpenJFX 11 到 18 的 Maven 链接可以是 found here ,以及其他 Maven 存储库。
OpenJFX 版本 14 到 18 的源代码可以是 found on GitHub网站 OpenJDK 。旧版本 2、8、9 和 10 的源代码可以在只读 Mercurial 上找到。 OpenJDK 的存储库。
关于java - OpenJdK 8 - 无法编译包 javafx.util 不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71037278/