当前位置: 首页 > 知识库问答 >
问题:

如何查找JavaFX版本

刘海
2023-03-14

这应该很容易,但我不知道怎么做。有没有办法找到安装的是哪一个JavaFX版本。我的意思不是通过system.getProperty(“JavaFX.runtime.version”)编程,尽管安装了JavaFX,但它在我的计算机上返回一个空字符串。

我宁愿在控制台上有类似java-version的东西,但是为了得到JavaFX版本。

或者,知道是否安装了JavaFX就足够了。我只是有一些客户不能运行我的Swing/JavaFX应用程序,想告诉他们检查一下是否安装了JavaFX。

共有1个答案

笪波鸿
2023-03-14

您不能真的像使用Java运行时一样执行此操作。区别在于java是启动JVM的机器可执行文件。JavaFX只是一组库类;在同一意义上,它并不是一个真正的可执行文件。

您可以在运行时读取的系统属性似乎保存在jre/lib/javafx.properties中,因此您可以执行以下操作:

cat $JAVA_HOME/jre/lib/javafx.properties

或者Windows的等价物。但是,如果您在运行时获得的System属性为空,那么我怀疑这个文件不存在。正如dfeuer所评论的那样,了解您的JRE版本将会有所帮助。

更新:JDK/JRE版本和JavaFX版本之间的关系如下所示。

从JRE 1.7.0 update 6开始,JRE包含JavaFX,但不在类路径上。因此,对于JRE 1.7.0、update 6和更高版本,jfxrt.jar文件包含在java_home/JRE/lib中。包含JavaFX版本信息的JavaFX.properties文件位于同一个目录中,尽管理论上至少JRE版本将决定JavaFX版本(因为它们是一起发布的)。

只要检查一下我在机器上安装的JDK1.7.0版本,就会发现从JDK版本到JavaFX版本的映射是:

/Library/Java/JavaVirtualMachines/jdk1.7.0_06.jdk   javafx.runtime.version=2.2.0
/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk   javafx.runtime.version=2.2.4
/Library/Java/JavaVirtualMachines/jdk1.7.0_11.jdk   javafx.runtime.version=2.2.4
/Library/Java/JavaVirtualMachines/jdk1.7.0_13.jdk   javafx.runtime.version=2.2.5
/Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk   javafx.runtime.version=2.2.7
/Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk   javafx.runtime.version=2.2.21
/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk   javafx.runtime.version=2.2.25
/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk   javafx.runtime.version=2.2.40
/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk   javafx.runtime.version=2.2.45

从JRE1.8.0开始,JRE中包含JavaFX,并将JavaFX放在类路径上;因此它实际上是核心库的完整部分。在1.8.0版本中,jfxrt.jar文件位于java_home/jre/lib/ext中(这会自动使其成为类路径的一部分)。包含JavaFX版本信息的JavaFX.properties文件仍然在java_home/jre/lib中。版本1.8.0中JavaFX的版本编号(似乎)只是模仿JRE版本:

/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk  javafx.runtime.version=8.0.0
/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk   javafx.runtime.version=8.0.5
/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk   javafx.runtime.version=8.0.20

因此,对于您的客户,您可以简单地要求他们执行java-version,并且在大多数情况下,您将能够推导出JavaFX版本。在一些罕见的情况下,你可能需要挖掘得更深一点。

类似的注意事项:如果您要将应用程序交付给客户,并且需要确定特定的版本,请考虑使用一个自包含的应用程序,在该应用程序中包含一个JRE(和JavaFX运行时)。

 类似资料:
  • 我编写了这样的代码来查找Android版本 通过使用这段代码,我得到的是版本号,但我想要的是版本名。如何获取版本名?

  • 问题内容: 如何在运行时找出正在使用的JavaFX版本? 问题答案:

  • 问题内容: 如何使用JavaScript查找操作系统名称和操作系统版本? 问题答案: 如果您使用列出所有的属性 你会看到这样的东西 请注意,该属性为您提供Windows版本。另外,您应该知道:

  • 是否有一种方法可以使用java代码找到MS Access的版本号。我正在使用jdbc-odbc桥连接MS Access。

  • 问题内容: 我必须为我们的应用程序使用Python和Django。所以我有两个版本的Python,分别是2.6和2.7。现在,我已经安装了Django。我可以运行示例应用程序以测试Django成功。但是,如何确定Django使用2.6还是2.7版本以及Django使用什么版本的模块? 问题答案: 我必须为我们的应用程序使用Python和Django。所以我有两个版本的Python,分别是2.6和2

  • 我最近遇到了一个问题,我需要从窗口中使用的节点获取特定节点(最好是通过id)。Im使用FXMLLoader,所以第一个想法是搜索树结构FXMLLoader返回。 进一步的研究让我在场景类中查找方法,但是官方留档(https://docs.oracle.com/javase/8/javafx/api/javafx/scene/Scene.html#lookup-java.lang.String-)缺