如何找到JavaFX版本

时间:2014-04-24 08:35:24

标签: javafx install

这应该很容易,但我无法弄清楚如何。 有没有办法找出安装的JavaFX版本。我不想通过System.getProperty("javafx.runtime.version")以编程方式表示,虽然安装了JavaFX,但它在我的计算机上返回一个空字符串。

我希望在控制台上有类似java -version的内容,但是为了获得JavaFX版本。

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

2 个答案:

答案 0 :(得分:6)

您无法像使用Java运行时那样执行此操作。区别在于java是启动JVM的机器可执行文件。 JavaFX只是一组库类;它不是真正的可执行文件。

看起来您可以在运行时读取的System属性保存在jre/lib/javafx.properties中,因此您可以执行类似

的操作
cat $JAVA_HOME/jre/lib/javafx.properties

或Windows等效的任何内容,如果您在Windows上运行。但是,如果在运行时获得的System属性为空,那么我怀疑该文件不存在。正如dfeuer评论的那样,了解你的JRE版本会有所帮助。

<强>更新: JDK / JRE版本与JavaFX版本之间的关系如下:

从JRE 1.7.0更新6开始,JavaFX包含在JRE中,但不在类路径中。因此,对于JRE 1.7.0,更新6及更高版本,jfxrt.jar文件包含在JAVA_HOME/jre/lib中。包含JavaFX版本信息的javafx.properties文件位于同一目录中,但理论上至少JRE版本将确定JavaFX版本(因为它们一起发货)。

只是检查我在我的机器上安装的JDK 1.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

从JRE 1.8.0开始,JavaFX包含在JRE中并被放置在类路径上;所以它实际上是核心库的一部分。在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版本。在极少数情况下,您可能需要深入挖掘一下。

一种相关的注意事项:如果要向客户发送应用程序并且需要确定特定版本,请考虑使用self contained application,其中包含JRE(和JavaFX运行时)应用

答案 1 :(得分:0)

对于Ubuntu 18.04,可以在/usr/share/openjfx/lib/javafx.properties中找到JavaFX版本。一个简单的命令应显示您拥有的版本。

$ cat /usr/share/openjfx/lib/javafx.properties
javafx.version=11.0.2-internal
javafx.runtime.version=11.0.2-internal+0-2019-02-19-093139
javafx.runtime.build=0

也许您的安装有类似的东西?