簡體   English   中英

使用 JDK 11+ 運行 JavaFX 應用程序

[英]Running JavaFX application with JDK 11+

如果我了解 Oracle 的公告,從 JDK 11 開始,JavaFX 將不會包含在 JDK 中,並且只能作為 OpenJFX 使用。

作為軟件開發人員,我必須采取哪些步驟才能讓我的 JavaFX 應用程序與 JDK 11+ 一起運行? 有什么好的建議嗎? 是否可以通過 Gradle 使用 OpenJDK?

JavaFX 11 可從 Maven Central 獲得,因此您可以使用 Maven 將它作為任何其他常規依賴項包含在您的項目中:

<dependencies>
    <dependency>
        <groupId>javafx</groupId>
        <artifactId>javafx.controls</artifactId>
        <version>11.0.0</version>
    </dependency>
</dependencies>

或搖籃:

dependencies {
    compile 'javafx:javafx.controls:11.0.0'
}

到目前為止(2018 年 6 月),這項工作正在進行中,但應該在 JDK 11 發布時准備就緒。

現在,您可以從這里下載 JavaFX 獨立 SDK 的早期版本,正如最近(2018 年 5 月)所宣布的那樣。

請注意,在任何情況下,您都不需要構建 OpenJDK,也不需要 OpenJFX。

您會發現一堆帶有不同模塊的 jar,例如javafx.base.jarjavafx.controls.jar ,以及您的平台所需的本機庫。

您可以使用從這里獲得的 OpenJDK 10 或 11 EA 構建來測試它們。

樣本

如果您有 JavaFX 應用程序類:

public class JavaFX11 extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        Scene scene = new Scene(new StackPane(new Label("JavaFX 11")), 300, 200);
        stage.setScene(scene);
        stage.show();
    }
}

你可以編譯它:

<path.to>/jdk-11.jdk/Contents/Home/bin/javac --module-path <path.to>/javafx-sdk-11/lib/ --add-modules=javafx.controls -d class/ src/<package.name>/JavaFX11.java

並運行它:

cd class
<path.to>/jdk-11.jdk/Contents/Home/bin/java --module-path <path.to>/javafx-sdk-11/lib/ --add-modules=javafx.controls <package.name>.JavaFX11

JavaFX 11

OpenJFX 與您的應用程序捆綁在一起

José Pereda答案關於在您的應用程序中捆綁 JavaFX 庫是正確的。

與 Java 捆綁的 OpenJFX

另一種方法是讓您的用戶在他們的機器上安裝 Java 實現,其中包括OpenJFX ( JavaFX ) 庫。 對於廣泛分發給公眾的應用程序,這種方法可能不可行。 但是對於企業或機構等受控環境中的應用程序,這可能是有益的。

OpenJXFOpenJDK項目上的一個子項目 但是 JavaFX 技術並未定義為Java SE的一部分。 因此,有些供應商選擇將 OpenJFX 與其基於 OpenJDK 的產品捆綁在一起,而有些則沒有。

目前至少有兩個供應商提供包含 OpenJFX 的 Java SE 實現。 兩者都建立在OpenJDK之上。 兩者都將 OpenJFX 向后移植到 Java 8。

這是我制作的流程圖,用於幫助選擇 Java 實現的供應商。 注意到捆綁OpenJFX 了嗎? 底部的分支。

在此處輸入圖片說明

您可以使用 LibericaJDK 而不是 OpenJDK。 它與 JavaFX 捆綁在一起,可以為您節省大量配置。 https://bell-sw.com/pages/downloads/#/java-11-lts只需要下載“Full JDK”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM