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
链接可能会更好)