使用OpenJDK 1.8的JavaFX的Maven依赖关系

时间:2019-05-27 22:12:29

标签: java maven javafx openjfx

环境:

  • 操作系统:为了开发和运行该应用程序,将同时使用Windows 10 Pro(1809)和Linux(类似Ubuntu或Debian)以及OpenJDK 1.8和Maven。
  • JDK: OpenJDK 1.8
  • IDE::IntelliJ Ultimate
  • 构建工具 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>
    .
    .
    .

我收到以下错误消息:

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.

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

在Maven <version>内部,最低的<dependency>似乎可以使用11。

问题:

  • 是否可以在pom.xml中添加/更改某些内容,以使应用程序得以编译和运行?
  • 我是否绝对需要升级到OpenJDK 11或12?

1 个答案:

答案 0 :(得分:1)

首先,有一点背景知识。从Java 8到Java 10,Oracle JDK曾经随JavaFX一起提供。但是,即使在这些版本中,JavaFX也不属于OpenJDK。从Java 11开始,JavaFx也不是Oracle JDK的一部分(与OpenJDK一样)。

那么,您在做什么错了?

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

你能做什么?

获取openjfx8。您可以从source构建它们,也可以通过sudo-apt在Ubuntu上进行安装。

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

不是我所知道的!

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