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

Mar*_*vic 50 java eclipse linux openjdk javafx

我正在尝试使用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)
Run Code Online (Sandbox Code Playgroud)

我的理解是,尽管自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
Run Code Online (Sandbox Code Playgroud)

我应该在哪里寻找它?

jew*_*sea 61

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

<JRE_HOME>/lib/jfxrt.jar
Run Code Online (Sandbox Code Playgroud)

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

<JRE_HOME>/lib/ext/jfxrt.jar
Run Code Online (Sandbox Code Playgroud)

<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中提供了更多功能.

我的理解是,虽然自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,则需要将其添加到类路径中,并使用适当的JavaFX打包工具来允许用户运行应用程序.某些工具(如e(fx)clipse和NetBeans JavaFX项目类型)将为您处理类路径问题和打包任务.


Yur*_*rik 6

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


Ebr*_*owi 5

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

/usr/share/java/openjfx/jre/lib/ext/jfxrt.jar
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/jfxrt.jar
Run Code Online (Sandbox Code Playgroud)

  • Ubuntu 18.04.2 LTS 似乎表现不同。有什么线索吗? (2认同)