[英]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.jar
或javafx.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
José Pereda的答案關於在您的應用程序中捆綁 JavaFX 庫是正確的。
另一種方法是讓您的用戶在他們的機器上安裝 Java 實現,其中包括OpenJFX ( JavaFX ) 庫。 對於廣泛分發給公眾的應用程序,這種方法可能不可行。 但是對於企業或機構等受控環境中的應用程序,這可能是有益的。
OpenJXF是OpenJDK項目上的一個子項目。 但是 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.