【问题标题】: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?TornadoFX _ Kotlin _ IntelliJ IDEA:由于我在项目中使用 openJDK 8,我怎么可能得到“未解决的参考:javafx”?
【发布时间】:2020-05-26 18:07:01
【问题描述】:

我正在尝试从 KotlinTornadoFX 开始。

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

我看到this post 告诉我们,未解决的参考:javafx 的错误与运行大于或等于 v11 的 Java 版本而不在项目中导入 JavaFX 的事实有关. 我已经阅读了集成了 JavaFX 的 Java v8。正如我已经说过的,在我的项目中,我将 Java 1.8 作为 SDK 运行。所以应该防止出现这个问题。

不过,当我“调试运行”时,我的调试控制台返回:

未解决的参考:javafx

如下图:

我看到的唯一可能有问题的地方是我机器上运行的软件。当我在 linux 终端中运行 java --version 时,它会返回:

openjdk 11.0.7 2020-04-14

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

那么我的错误怎么可能呢?我能做些什么来解决这个问题?

【问题讨论】:

  • 在“Project Structure”窗口中,点击“Libraries”,如果SDK自带,只需指向JavaFX的“lib”文件夹即可。另一件事,在“模块”部分 - >“依赖项”选项卡中,确保它指向正确的版本(我有时间由于某种原因没有,我不得不手动设置它)。
  • @DoombringerBG 感谢您的评论。该模块实际上是 Java 1.8,经过快速搜索,似乎 JavaFX 应该嵌入到 OpenJDK8 中。

标签: kotlin intellij-idea javafx tornadofx


【解决方案1】:

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

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

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

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

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

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

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

总之,确保您的项目是最新的,因为您替换了 jre 文件夹。

现在我的项目运行良好。

【讨论】:

    【解决方案2】:

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

    • Zulu :必须在Java Package下拉菜单中选择“JDK FX”
    • Liberica:必须选择“Full JDK”

    Liberica 为 raspberry pi 和各种其他架构提供构建。如果您需要,利比里卡是您的最佳选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      • 2020-03-09
      • 2021-12-16
      • 1970-01-01
      • 2019-10-30
      • 2020-01-27
      • 2021-02-27
      相关资源
      最近更新 更多