使用 OpenJDK 1.8 的 JavaFX 的 Maven 依赖项
Posted
技术标签:
【中文标题】使用 OpenJDK 1.8 的 JavaFX 的 Maven 依赖项【英文标题】:Maven dependency for JavaFX using OpenJDK 1.8 【发布时间】:2019-10-13 10:27:18 【问题描述】:环境:
操作系统:为了开发和运行应用程序,将使用安装了 OpenJDK 1.8 和 Maven 的 Windows 10 Pro (1809) 和 Linux(类似于 Ubuntu 或 Debian)。 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[...]
。
最低的<version>
,Maven里面的<dependency>
,我能用的好像是bo 11。
问题:
我可以向我的pom.xml
添加/更改一些内容以使我的应用程序编译和运行吗?
我是否绝对需要升级到 OpenJDK 11 或 12?
【问题讨论】:
你不能用 JDK 8 运行 JavaFX 11+。如果你真的需要保持在 8,我建议你使用已经捆绑了 JavaFX 的 JDK,那里有几个选项,或者您从 OpenJFX 安装 JavaFX 8(但不使用 Maven)。 我想知道是什么让您无法仅更新到 JDK 的当前版本 12。我的意思是这是一个严肃的问题,而不是批评。 @mipa:我个人?没有!我对新版本/技术非常开放,并且我会尽可能更新所有内容,尽管我知道这在大多数情况下会导致问题并耗费工时。 【参考方案1】:首先,一些背景知识。从 Java 8 到 Java 10,Oracle JDK 曾经与 JavaFX 一起提供。但是,即使在这些版本中,JavaFX 也不是 OpenJDK 的一部分。从 Java 11 开始,JavaFx 也不再是 Oracle JDK 的一部分(就像 OpenJDK 一样)。
那么,你做错了什么?
您正在尝试使用 JDK 8 运行 JavaFX 11 和 12。这是不可能的。
你能做什么?
获取 openjfx 8。您可以从 source 构建它们,也可以在 Ubuntu 上通过 sudo-apt 安装它。
JavaFX 8 是否可用作 Maven 依赖项?
我不知道!
我的建议.. 如果您想使用 Java8 或升级到 Java 11 并使用 openJFX 作为 Maven 依赖项,请使用 Oracle JDK。
【讨论】:
我下载并安装了 Oracle JDK 8 但我仍然得到 javafx.application 等不存在错误。还有其他建议吗? 如果您将项目设置为使用 Java 8,heroku 将使用 OpenJDK 8。因此,不能只使用 Oracle JDK 8。某处必须有一个 Maven 依赖项,其中包括 java 8 级别的 javafx。对于 heroku,另一种选择是使用 buildpacks 来包含 javafx 8。但这对我来说还没有成功。 @gopala-krishna-char - 你能解释一下这将如何与使用 OpenJDK8 的项目一起工作吗? “获取 openjfx 8。您可以从源代码构建它们,也可以在 Ubuntu 上通过 sudo-apt 安装它。”以上是关于使用 OpenJDK 1.8 的 JavaFX 的 Maven 依赖项的主要内容,如果未能解决你的问题,请参考以下文章
使用 gradle 6.3、OpenJDK 14 和 OpenJFX 14 部署 JavaFX 应用程序
为什么OpenJDK 8在使用Docker时没有拔出正确的JavaFX库?