如何找到JavaFX版本

haf*_*ues 5 install javafx

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

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

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

Jam*_*s_D 7

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

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

cat $JAVA_HOME/jre/lib/javafx.properties
Run Code Online (Sandbox Code Playgroud)

或者等同于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.properties包含JavaFX版本信息的文件位于同一目录中,但理论上至少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
Run Code Online (Sandbox Code Playgroud)

从JRE 1.8.0开始,JavaFX包含在JRE中并被放置在类路径上; 所以它实际上是核心库的一部分.在1.8.0版本中,jfxrt.jar文件位于JAVA_HOME/jre/lib/ext(它自动使其成为类路径的一部分).javafx.properties包含JavaFX版本信息的文件仍在JAVA_HOME/jre/lib.JavaFX版本1.8.0(似乎)的版本编号只是模仿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
Run Code Online (Sandbox Code Playgroud)

因此,对于您的客户,您可以简单地要求他们这样做,java -version并且在大多数情况下,您将能够推断出JavaFX版本.在极少数情况下,您可能需要深入挖掘一下.

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