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

我试图在Linux机器上用Eclipse Kepler和e(fx)clipse插件运行一些JavaFX代码,使用:

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) 

我的理解是,虽然自JDK 7u6以来,JavaFX已经包含在标准JDK中,但JavaFX运行时JAR文件jfxrt.jar仍然不在Java运行时path中,直到在JavaFX和其他Java基础架构之间进行进一步testing已经完成。 出于这个原因,当我们创build一个新的Java项目时,您必须手动将其添加到项目构buildpath库中。

我一直在寻找这个jar子在以下目录没有成功:

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

我应该在哪里找它?

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

 <JRE_HOME>/lib/jfxrt.jar 

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

 <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中,也包含在默认的类path中。 这意味着JavaFX类将在构build期间由编译器自动find,在用户使用应用程序时由运行时自动find。 所以使用Oracle Java 8是目前解决您的问题的最佳解决scheme。

OpenJDK for Java 8可以包含JavaFX(因为JavaFX for Java 8现在是开源的),但是它将依赖于OpenJDK软件包组装者是否select将JavaFX 8包含在其发行版中。 我希望他们这样做,因为它应该有助于消除您在问题中遇到的困惑,并且在OpenJDK中还提供了更多的function。

我的理解是,尽pipe自JDK 7u6以来JavaFX已经包含在标准的JDK中

是的,但只有Oracle JDK。

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

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

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

 C:\Program Files\Java\jdk1.8.0_05\jre\lib\ext\jfxrt.jar 

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