2012-06-29 109 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