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
如果我使用来自jdk1.8.0_202
的甲骨文项目成功编译!
该项目必须由java 8编译,这是客户的要求。
发布于 2022-02-08 16:26:33
tl;dr
以下任一项:
详细信息
JavaFX从未成为Java的正式组成部分。
有一段时间,甲骨文包括他们的JavaFX库和他们的JDK。他们后来停止了捆绑。
您需要将JavaFX的实现添加到项目中。您将在OpenJFX中找到这样的实现。这个开源项目是由胶子和甲骨文共同领导的OpenJDK上的一个子项目项目.
使用您选择的依赖关系管理器(如Apache或Gradle )将OpenJFX库添加到项目中。下面我把OpenJFX 11到17的Maven回购链接放在这里,但是这些链接需要11+。我没有为JavaFX/OpenJFX为Java 8找到任何Maven回购链接。
或者,您可以开发并部署到一个捆绑OpenJFX库的JDK上。至少有两个供应商通过这样一个包提供了JDK产品的版本:
如果可能的话,可以考虑从Java8迁移。我建议移到更晚的Java11和17的LTS版本,以及最新的OpenJFX 17版本,后者需要Java11或更高版本。近年来,Java和JavaFX都有了很大的发展。这种发展包括https://openjdk.java.net/jeps/282和https://openjdk.java.net/jeps/392工具,将您的JavaFX应用程序打包为单一的“双击”应用程序,该应用程序包含在特定平台上运行所需的JDK/JVM的最小部分。
版本
对于Java 11到17,需要/建议使用Java11或更高版本。见发行说明。
OpenJFX 11到18的Maven链接可以是在这里发现的,以及其他Maven存储库上的链接。
OpenJFX版本14到18的源代码可以是OpenJDK的在GitHub上发现站点。旧版本2、8、9和10的源代码可以在OpenJDK的只读OpenJDK存储库中找到。
https://stackoverflow.com/questions/71037278
复制相似问题