我正在尝试使用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
我应该在哪里寻找它?
答案 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,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