JavaFX 运行时 JAR 文件 jfxrt.jar 在 Linux 上的位置是什么?

2022-08-31 17:00:22

我正在尝试使用Eclipse Kepler运行一些JavaFX代码,并安装了e(fx)clipse插件,在Linux机器上使用:

java version "1.7.0_21"
OpenJDK Runtime Environment (IcedTea 2.3.9) (7u21-2.3.9-5)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)

我的理解是,尽管 JavaFX 自 JDK 7u6 版本以来一直包含在标准 JDK 中,但 JavaFX 运行时 JAR 文件 jfxrt.jar 故意被排除在 Java 运行时路径之外,直到 JavaFX 与其他 Java 基础结构之间的进一步测试完成。因此,在创建新的 Java 项目时,必须手动将其添加到项目生成路径库中。

我一直在以下两个目录中寻找该jar,但没有成功:

/usr/lib/jvm/java-7-openjdk-common/jre/lib/
/usr/lib/jvm/java-7-openjdk-amd64/lib

我还能在哪里寻找它?


答案 1

2021 年 3 月更新

这个答案中以前的信息现在已经过时了,对于更高版本的Java和JavaFX(例如Java 11 +)。此更新提供了更多最新版本的信息。

JavaFX 现在可以从 openjfx.io 或公共 Maven 存储库中作为 SDK、库集或模块集获得。JavaFX已被划分为一组依赖项,而不是与Java运行时一起分发的单体库(例如,以前在Oracle Java 8中的情况)。jfxrt.jar

对于 JavaFX 版本 11+,JavaFX jar 文件(以及伴随它们的本机库)的位置将取决于您构建项目的方式。例如:

  • 如果您使用 Maven 或 Gradle 等构建工具,并将 JavaFX 指定为依赖项,则 JavaFX jar 文件将下载到本地 Maven 或 Gradle 存储库中(与其他 maven 依赖项相同)。
  • 如果您从 openjfx.io(gluon)下载JavaFX SDK,则JavaFX jar文件将位于您解压缩SDK的位置。

jfxrt.jar在Oracle Java 7中的位置是:

<JRE_HOME>/lib/jfxrt.jar

jfxrt.jar在Oracle Java 8中的位置是:

<JRE_HOME>/lib/ext/jfxrt.jar

这将取决于您安装Oracle Java的位置,并且在Linux发行版和安装之间可能会有所不同。<JRE_HOME>

jfxrt.jar不在Linux OpenJDK 7中(这是你正在使用的)。


一个开源软件包为基于Debian的系统(如Ubuntu)提供JavaFX 8。要安装这个软件包,必须同时安装 Debian OpenJDK 8 软件包和 Debian OpenJFX 软件包。我不运行 Debian,所以我不确定 Debian OpenJFX 软件包在哪里安装 jfxrt.jar。


使用 Oracle Java 8

在 Oracle Java 8 中,JavaFX 既包含在 JDK 中,又位于默认类路径上。这意味着编译器在构建期间和运行时都会自动找到 JavaFX 类,而在用户使用您的应用程序时,JavaFX 类也会自动找到。因此,使用Oracle Java 8是目前解决您问题的最佳解决方案。

OpenJDK for Java 8可能包括JavaFX(因为JavaFX for Java 8现在是开源的),但它将取决于OpenJDK包汇编器是否选择将JavaFX 8包含在他们的发行版中。我希望他们这样做,因为它应该有助于消除您在问题中遇到的困惑,并且它还在OpenJDK中提供了更多的功能。

我的理解是,尽管JavaFX自JDK 7u6版本以来一直包含在标准JDK中。

是的,但只有Oracle JDK。

与Java 7捆绑在一起的JavaFX版本不是完全开源的,因此它不能包含在OpenJDK中(这是您正在使用的)。

如果您需要使用Java 7而不是Java 8,则可以下载Oracle JDK for Java 7并使用它。然后JavaFX将包含在Java 7中。由于Oracle配置Java 7的方式,JavaFX将不在类路径上。如果使用 Java 7,则需要将其添加到类路径中,并使用适当的 JavaFX 打包工具来允许用户运行应用程序。某些工具(如 e(fx)clipse 和 NetBeans JavaFX 项目类型)将为您处理类路径问题和打包任务。


答案 2

当我使用JavaFX安装JavaFX时,我的位于Ubuntu 18.04上(如上面的@jewelsea已经指出的那样)apt install openjfx

/usr/share/java/openjfx/jre/lib/ext/jfxrt.jar
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/jfxrt.jar

推荐