【发布时间】:2012-07-01 07:01:33
【问题描述】:
如何在运行时找出我正在使用的 JavaFX 版本?
【问题讨论】:
如何在运行时找出我正在使用的 JavaFX 版本?
【问题讨论】:
一种简单的方法是简单地读取位于您的$JAVA_HOME/jre/lib 目录中的javafx.properties 文件。
我现在安装了 Java 1.7 u9。与它捆绑的 JavaFX 是 v2.0.3,因此上述文件包含以下行:
javafx.runtime.version=2.0.3
【讨论】:
javafx.runtime.version=8.0.31。对吗?
com.sun.javafx.runtime.VersionInfo.getRuntimeVersion();
【讨论】:
您可以从系统属性中获取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")