使用JDK 11+运行JavaFX应用程序

时间:2018-06-13 04:13:26

标签: java javafx javafx-8 openjfx

如果我理解Oracle的公告,JavaKX将不会从JDK 11开始包含在JDK中,并且仅作为OpenJFX提供。

作为软件开发人员,我必须采取哪些步骤来允许我的JavaFX应用程序与JDK 11+一起运行?有什么好的adivce吗?将通过Gradle提供OpenJDK吗?

4 个答案:

答案 0 :(得分:13)

JavaFX 11将从Maven Central提供,因此您可以使用Maven将其作为任何其他常规依赖项包含在项目中:

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

或Gradle:

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

到目前为止(2018年6月),这是progress中的工作,但它应该在JDK 11 release时准备就绪。

现在,您可以从here下载早期版本的JavaFX独立SDK,如宣布的recently (May 2018)

请注意,无论如何,在任何情况下,您都不需要构建OpenJDK,也不需要OpenJDK。

你会发现一堆包含javafx.base.jarjavafx.controls.jar等不同模块的jar,以及你平台所需的本机库。

您可以使用OpenJDK 10或11 EA构建测试它们,您可以从here获得它们。

<强>示例

如果您有JavaFX Application类:

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

答案 1 :(得分:1)

与您的应用捆绑在一起的OpenJFX

Answer by José Pereda关于在应用程序中捆绑JavaFX库是正确的。

与Java捆绑在一起的OpenJFX

一种替代方法是让您的用户在其计算机上安装了包含OpenJFXJavaFX)库的Java实现。对于广泛分发给公众的应用而言,这种方法可能行不通。但是对于在受控环境中的应用程序(例如企业或机构),这可能是有益的。

OpenJXF sub-project on the OpenJDK project。但是JavaFX技术并未定义为Java SE的一部分。因此,有些供应商选择将OpenJFX与基于OpenJDK的产品捆绑在一起,而有些则没有。

当前至少有两个供应商提供了带有OpenJFX的Java SE实现。两者都建立在OpenJDK之上。两者都已将OpenJFX反向移植到Java 8。

这是我帮助选择Java实现供应商的流程图。注意底部的 OpenJFX捆绑了吗?分支。

enter image description here

答案 2 :(得分:1)

您可以使用 LibericaJDK 而不是 OpenJDK。它与 JavaFX 捆绑在一起,可以为您节省大量配置。 https://bell-sw.com/pages/downloads/#/java-11-lts 只需要下载“完整的JDK”。

答案 3 :(得分:0)

很难找到与JavaFX打包在一起的官方预构建OpenJDK。这是我唯一能找到的:

https://www.azul.com/downloads/zulu/zulufx/