繁体   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