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

时间:2014-03-19 17:58:04

标签: java linux eclipse javafx openjdk

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

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运行时路径之外,直到JavaFX与其他部分之间的进一步测试为止。 java基础设施已经完成。因此,在创建新的Java项目时,必须手动将其添加到项目构建路径库中。

我一直在以下目录中寻找那个jar而没有成功:

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

我应该在哪里寻找它?

4 个答案:

答案 0 :(得分:59)

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中(这是你正在使用的)。


提供了一个提供JavaFX 8 for Debian based systems的开源软件包,例如Ubuntu。要安装此软件包,必须安装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中提供了更多功能。

  

我的理解是,虽然自JDK 7u6版以来JavaFX已包含在标准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,则需要add it to your classpath and use appropriate JavaFX packaging tools以允许您的用户运行您的应用程序。某些工具(如e(fx)clipse和NetBeans JavaFX项目类型)将为您处理类路径问题和打包任务。

答案 1 :(得分:5)

当我使用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

答案 2 :(得分:4)

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

答案 3 :(得分:0)

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

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