2012-06-29 58 views

回答

31
com.sun.javafx.runtime.VersionInfo.getRuntimeVersion(); 
+0

似乎并不通过Java的Web工作开始 – assylias

+0

你能不能,请详细点吗?有没有输出或异常? –

+1

我没有在我面前,但实质上:类加载器异常,无法加载com.sun.javafx.runtime.VersionInfo。程序不启动。 – assylias

14

您可以从系统属性中获取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的访问,因此谢尔盖的com.sun调用可能是即使所有com.sun呼叫已被弃用更好,而不是部分的官方JavaFX公共API。

更新

@assylias对谢尔盖的回答意见将似乎表明,谢尔盖的com.sun可能导致安全异常,如果未签名的应用程序嵌入浏览器或通过Webstart的访问。因此,在这些特定条件下运行时,确定javafx运行时版本可能没有好的解决方案。

+0

由于权限不足,这在沙盒applet中不起作用。稍微修改后的版本'System.getProperty(“javafx.runtime.version”)'的确也没有与此错误的工作:'java.security.AccessControlException:访问被拒绝(“java.util.PropertyPermission”“javafx.runtime.version” “读”)' –

36

一个简单的方法是简单地读取javafx.properties文件位于您$JAVA_HOME/jre/lib目录。

我已经安装在目前的Java 1.7 U9。 JavaFX的与它捆绑的是V2.0.3,因此上述文件包含以下行:

javafx.runtime.version=2.0.3 
+0

我安装了java 1.8.0-31,所以我得到'javafx.runtime.version = 8.0.31'。这是正确的吗? – Brian

+1

是的。 Java 1.8.0已经捆绑了JavaFX 8。 – DejanLekic