我正在尝试在Linux计算机上使用Eclipse Kepler运行一些JavaFX代码,并安装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
我还应该在哪里寻找?
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发行版和安装之间的差异。
<JRE_HOME>
jfxrt.jar不在Linux OpenJDK 7中(这是您使用的)。
提供了一个开源软件包,该软件包为基于Debian的系统(例如Ubuntu)提供JavaFX8。要安装此软件包,必须同时安装Debian OpenJDK8软件包和Debian OpenJFX软件包。我没有运行Debian,所以我不确定Debian OpenJFX软件包在哪里安装jfxrt.jar。
使用Oracle Java8。
对于Oracle Java8,JavaFX既包含在JDK中,又位于默认的类路径中。这意味着JavaFX类将在编译期间以及用户使用您的应用程序时在运行时自动找到。因此,当前使用OracleJava 8是解决您问题的最佳解决方案。
适用于Java 8的OpenJDK可以包括JavaFX(因为Java8的JavaFX现在是开放源代码),但是对于他们是否选择在发行版中包含JavaFX8,它将取决于OpenJDK软件包的组装者。我希望他们能这样做,因为它应该有助于消除您在问题中遇到的困惑,并且它还提供了OpenJDK中的更多功能。
我的理解是,尽管自版本JDK 7u6起JavaFX已包含在标准JDK中
是的,但是只有Oracle JDK。
与Java 7捆绑在一起的JavaFX版本不是完全开源的,因此它不能包含在OpenJDK(您正在使用的版本)中。
如果需要使用Java 7而不是Java 8,则可以下载Oracle JDKforJava7并使用它。然后JavaFX将包含在Java7中。由于Oracle配置Java 7的方式,JavaFX将不在类路径中。如果您使用Java 7,则需要将其添加到类路径中,并使用适当的JavaFX打包工具来允许您的用户运行您的应用程序。一些工具,例如e(fx)clipse和NetBeansJavaFX项目类型,将为您解决类路径问题和打包任务。