如何获取 JavaFX 的版本号?
Posted
技术标签:
【中文标题】如何获取 JavaFX 的版本号?【英文标题】:How to get the version number of JavaFX? 【发布时间】:2012-07-01 07:01:33 【问题描述】:如何在运行时找出我正在使用的 JavaFX 版本?
【问题讨论】:
【参考方案1】:一种简单的方法是简单地读取位于您的$JAVA_HOME/jre/lib
目录中的javafx.properties
文件。
我现在安装了 Java 1.7 u9。与它捆绑的 JavaFX 是 v2.0.3,因此上述文件包含以下行:
javafx.runtime.version=2.0.3
【讨论】:
我安装了 java 1.8.0-31,所以我得到了javafx.runtime.version=8.0.31
。对吗?
是的。 Java 1.8.0 捆绑了 JavaFX 8。【参考方案2】:
com.sun.javafx.runtime.VersionInfo.getRuntimeVersion();
【讨论】:
您能详细说明一下吗?有输出或异常吗? 眼前没有,但实质:Classloader异常,无法加载com.sun.javafx.runtime.VersionInfo。并且程序没有启动。【参考方案3】:您可以从系统属性中获取javafx.runtime.version
号码。
import javafx.application.Application;
import javafx.stage.Stage;
public class ReportVersion extends Application
public static void main(String[] args) launch(args);
@Override public void start(Stage stage)
System.out.println("javafx.runtime.version: " + System.getProperties().get("javafx.runtime.version"));
System.exit(0);
请注意,如果未签名的应用程序嵌入在浏览器中或通过 WebStart 访问,则系统属性访问方法可能会导致安全异常,因此 Sergey 的 com.sun
调用可能会更好,即使所有 com.sun
调用都已弃用而不是一部分官方 JavaFX 公共 API。
更新
@assylias cmets 在 Sergey 的回答中似乎表明,如果未签名的应用程序嵌入在浏览器中或通过 WebStart 访问,Sergey 的 com.sun
可能会导致安全异常。因此,在这些特定条件下运行时,确定 javafx 运行时版本可能没有好的解决方案。
【讨论】:
由于缺少权限,这在沙盒小程序中不起作用。稍作修改的版本System.getProperty("javafx.runtime.version")
也不适用于此错误:java.security.AccessControlException: access denied ("java.util.PropertyPermission" "javafx.runtime.version" "read")
以上是关于如何获取 JavaFX 的版本号?的主要内容,如果未能解决你的问题,请参考以下文章