Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';Linux上JavaFX运行时JAR文件jfxrt.JAR的位置在哪里?_Java_Linux_Eclipse_Javafx_Openjdk - Fatal编程技术网

什么';Linux上JavaFX运行时JAR文件jfxrt.JAR的位置在哪里?

什么';Linux上JavaFX运行时JAR文件jfxrt.JAR的位置在哪里?,java,linux,eclipse,javafx,openjdk,Java,Linux,Eclipse,Javafx,Openjdk,我正在尝试使用Eclipse Kepler在Linux机器上运行一些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

我正在尝试使用Eclipse Kepler在Linux机器上运行一些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在JavaFX和Java基础设施其余部分之间的进一步测试完成之前,故意不在Java运行时路径中。因此,在创建新Java项目时,必须手动将其添加到项目构建路径库中

我一直在以下两个目录中寻找该jar,但都没有成功:

/usr/lib/jvm/java-7-openjdk-common/jre/lib/
/usr/lib/jvm/java-7-openjdk-amd64/lib
我还应该在哪里寻找它?

更新日期:2021年3月

此答案中的先前信息现在对于Java和JavaFX的更高版本(例如Java 11+)已经过时。此更新提供了最新版本的信息

JavaFX现在可以作为SDK、库集或模块集从公共Maven存储库或公共Maven存储库中获得。JavaFX已被划分为一组依赖项,而不是一个与Java运行时一起分发的单一
jfxrt.jar
库(例如,之前的Oracle Java 8)

对于JavaFX的11+版本,JavaFXJAR文件(以及随附的本机库)的位置将取决于您如何构建项目。例如:

  • 如果使用Maven或Gradle等构建工具并指定JavaFX作为依赖项,那么javafxjar文件将下载到本地Maven或Gradle存储库中(与其他Maven依赖项相同)
  • 如果您从下载JavaFXSDK,那么JavaFXJAR文件将位于您解压缩SDK的位置


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

<JRE_HOME>/lib/jfxrt.jar
/lib/jfxrt.jar

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

<JRE_HOME>/lib/ext/jfxrt.jar
/lib/ext/jfxrt.jar
将取决于您安装Oracle Java的位置,Linux发行版和安装版本之间可能有所不同

jfxrt.jar不在LinuxOpenJDK7中(这是您正在使用的)


一个开源软件包,它提供了诸如Ubuntu之类的功能。要安装此软件包,必须同时安装Debian OpenJDK 8软件包和Debian OpenJFX软件包。我不运行Debian,所以我不确定DebianOpenJFX包在哪里安装jfxrt.jar


使用

对于OracleJava8,JavaFX既包含在JDK中,也位于默认类路径上。这意味着编译器将在构建期间和用户使用应用程序时在运行时自动找到JavaFX类。因此,使用Oracle Java 8是目前解决您的问题的最佳解决方案

openjdkforjava8可以包括JavaFX(因为javafxforjava8现在是开源的),但这将取决于OpenJDK包汇编程序是否选择在其发行版中包括javafx8。我希望他们会这样做,因为这将有助于消除您在问题中遇到的困惑,并且它还提供了OpenJDK中更多的功能

我的理解是,尽管自JDK7U6版本以来,JavaFX已经包含在标准JDK中

是的,但只有Oracle JDK

与Java7捆绑在一起的JavaFX版本不是完全开源的,因此它不能包含在OpenJDK中(您正在使用的是OpenJDK)


如果需要使用Java7而不是Java8,可以下载并使用。然后JavaFX将包含在Java7中。由于Oracle配置Java7的方式,JavaFX将不在类路径上。如果使用Java7,则需要允许用户运行应用程序。一些工具,如e(fx)clipse和NetBeans JavaFX项目类型,将为您解决类路径问题和打包任务。

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


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

当我使用
apt install openjfx
安装JavaFX时,我的位置在Ubuntu 18.04上(如上@jewelsea所述)


试着在shell
上运行jfxrt.jar
以查看da locationMine在jdk1.7.051/jre/lib中,但它使用的是标准的JDK,而不是OpenJDK。您可能还希望看到:在ubuntu16.04中,openjfx包将其放在/lib/ext/jfxrt.jar中,与这里描述的完全相同。ubuntu18.04.2 LTS的行为似乎有所不同。有什么线索吗?我已经安装了openjfx,但我估计找不到usr/share/java/openjfx/jre/lib/ext/jfxrt.jar
C:\Program Files\Java\jdk1.8.0_05\jre\lib\ext\jfxrt.jar
/usr/share/java/openjfx/jre/lib/ext/jfxrt.jar
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/jfxrt.jar