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



我试图运行一些JavaFX代码与Eclipse开普勒,与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

我还应该去哪里找呢?

2021年3月更新

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

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

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

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

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

<JRE_HOME>/lib/jfxrt.jar

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

<JRE_HOME>/lib/ext/jfxrt.jar

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

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

当我使用apt install openjfx安装JavaFX时,我的位于这里在Ubuntu 18.04上(如上所述@jewelsea)

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

在Ubuntu上使用OpenJDK,它安装在/usr/lib/jvm/default-java/jre/lib/ext/jfxrt.jar(技术上它是一个符号链接到/usr/share/java/openjfx/jre/lib/ext/jfxrt.jar,但它可能更好地使用default-java链接)

jfxrt.jar在JDK 1.8 (Windows)中的位置为:

C:Program FilesJavajdk1.8.0_05jrelibextjfxrt.jar

最新更新