TornadoFX _ Kotlin _ IntelliJ IDEA:自从我在我的项目中使用 openJDK 8 以来,我怎么可能得到 "Unresolved reference: javafx"?

TornadoFX _ Kotlin _ IntelliJ IDEA: How is it possible that I am getting an "Unresolved reference: javafx" since I am using openJDK 8 in my project?

我正在尝试从 KotlinTornadoFX 开始。

我已经下载Java jdk8u252-b09并将其设置为我的项目SDK。见下图:

我看到 通知我们 未解决的参考:javafx 的错误与 运行宁一个版本 Java 大于或等于 v11,而不在项目中导入 JavaFX。 我已经阅读了 Java 的 v8,其中集成了 JavaFX。正如我已经说过的,在我的项目中,我将 运行ning Java 1.8 作为 SDK。所以应该杜绝这个问题的发生。

不过,当我 "debug run" 我的调试控制台 returns 我:

Unresolved reference: javafx

如下图:

我看到的唯一可能有问题的地方是我机器中的软件 运行ning。当我 运行ning java --version 在 linux 终端中 returns 我:

openjdk 11.0.7 2020-04-14

因为我使用的是 Debian Buster,所以 openjdk 11 似乎是 OS 版本支持的最旧版本。因此,如果问题与系统中安装的 openjdk 有关,我想知道除了 运行 虚拟机之外是否有任何解决方法。此外,我认为安装在 IntelliJ IDEA 中的 SDK 将克服在我的项目上下文中安装在我的系统中的 Java 版本,从而防止安装在我的机器中的软件对 运行 我的 运行 造成任何问题项目。

所以我的错误怎么可能?我该怎么做才能解决这个问题?

事实上,在我下载的 OpenJDK8 版本中,jfxrt.jar 丢失了。

所以我单独下载了一个 jfxrt.jar 并将其包含在我的 /jdk8u252-b09/jre/lib/ext/ 文件夹中。

然后控制台告诉我缺少一个工具包。

所以,在/jdk8u252-b09/中,我刚刚将jdk8u252-b09原来的jre完全替换成了https://java.com/en/download/linux_manual.jsp提供的jre。

在这种情况下,有效确保在您的项目结构中,在您的 "Module" 部分 -> "Dependencies" 选项卡中,您的依赖项指向相关文件夹 [感谢 DoombringerBG]。

您项目的SDK也是如此,确保它是最新的。

关于您的库,它应该知道没问题,因为您的 Java8 文件夹树中包含 JavaFX。

一言以蔽之,确保您的项目是最新的,替换了您的 jre 文件夹。

现在我的项目工作正常。

我发现大多数 OpenJDK8 不包含 JavaFX。我知道有两个这样做,您可能想尝试使以后的更新更容易:

  • Zulu :您必须 select "JDK FX" 在 Java 包下拉菜单中
  • Liberica:你必须select"Full JDK"

Liberica 为 raspberry pi 和各种其他架构提供构建。如果您需要,Liberica 是您的不二之选。