使用 OpenJDK 1.8 的 JavaFX 的 Maven 依赖项

Kas*_*nes 9 java javafx maven openjfx

环境:

  • 操作系统:为了开发和运行应用程序,将使用安装了 OpenJDK 1.8 和 Maven 的 Windows 10 Pro (1809) 和 Linux(类似 Ubuntu 或 Debian)。
  • JDK: OpenJDK 1.8
  • IDE: IntelliJ 终极版
  • 构建工具Maven(多模块项目,一个模块使用JavaFX)
  • 我非常不想使用任何带有付费许可证的东西(尽管对于这个项目,我可能可以免费使用 Oracle JDK...)。

问题:

我知道,JDK 1.8 应该包含 JavaFX。然而,对于 OpenJDK 1.8,不知何故,情况似乎并非如此(没有 Maven 依赖项,IntelliJ 不接受import javafx.application.Application;也不接受任何其他 JFX 导入)。

出于这个原因,我试图将其作为 Maven 依赖项包含在内。如果我使用:

    <!-- JavaFX -->
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>11</version>
    </dependency>
    .
    .
    .
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

Error:(3, 26) java: cannot access javafx.application.Application
   bad class file: /C:/Users/kaspa/.m2/repository/org/openjfx/javafx- 
   graphics/11/javafx-graphics-11-win.jar!/javafx/application/Application.class
   class file has wrong version 54.0, should be 52.0
   Please remove or make sure it appears in the correct subdirectory of the 
   classpath.
Run Code Online (Sandbox Code Playgroud)

使用<version>12</version>产量[...]wrong version 55.0, should be 52.0[...]

最低的<version>,在 Maven 里面<dependency>,我可以使用的似乎是 bo 11。

问题:

  • 有什么我可以添加/更改的内容pom.xml以使我的应用程序编译和运行吗?
  • 我是否绝对需要升级到 OpenJDK 11 或 12?

小智 7

首先,介绍一下背景。从 Java 8 到 Java 10,Oracle JDK 曾经与 JavaFX 一起提供。但是,即使在这些版本中,JavaFX 也不是 OpenJDK 的一部分。从 Java 11 开始,JavaFx 也不再是 Oracle JDK 的一部分(就像 OpenJDK 的情况一样)。

那么,你做错了什么?

您正在尝试使用 JDK 8 运行 JavaFX 11 和 12。这是不可能的。

你能做什么?

获取 openjfx 8。您可以从源代码构建它们,也可以通过 sudo-apt 在 Ubuntu 上安装它。

JavaFX 8 是否可用作 Maven 依赖项?

不是我知道的!

我的建议..如果您想使用 Java8 或升级到 Java 11 并使用 openJFX 作为 Maven 依赖项,请使用 Oracle JDK。