【问题标题】:How to get the version number of JavaFX?如何获取 JavaFX 的版本号?
【发布时间】:2012-07-01 07:01:33
【问题描述】:

如何在运行时找出我正在使用的 JavaFX 版本?

【问题讨论】:

    标签: java javafx javafx-2


    【解决方案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")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-01
    • 1970-01-01
    • 2018-06-22
    • 2010-10-15
    • 2014-11-15
    相关资源
    最近更新 更多