如果我理解Oracle的公告,JavaKX将不会从JDK 11开始包含在JDK中,并且仅作为OpenJFX提供。
作为软件开发人员,我必须采取哪些步骤来允许我的JavaFX应用程序与JDK 11+一起运行?有什么好的adivce吗?将通过Gradle提供OpenJDK吗?
答案 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.jar
或javafx.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
答案 1 :(得分:1)
Answer by José Pereda关于在应用程序中捆绑JavaFX库是正确的。
一种替代方法是让您的用户在其计算机上安装了包含OpenJFX(JavaFX)库的Java实现。对于广泛分发给公众的应用而言,这种方法可能行不通。但是对于在受控环境中的应用程序(例如企业或机构),这可能是有益的。
OpenJXF 是sub-project on the OpenJDK project。但是JavaFX技术并未定义为Java SE的一部分。因此,有些供应商选择将OpenJFX与基于OpenJDK的产品捆绑在一起,而有些则没有。
当前至少有两个供应商提供了带有OpenJFX的Java SE实现。两者都建立在OpenJDK之上。两者都已将OpenJFX反向移植到Java 8。
这是我帮助选择Java实现供应商的流程图。注意底部的 OpenJFX捆绑了吗?分支。
答案 2 :(得分:1)
您可以使用 LibericaJDK 而不是 OpenJDK。它与 JavaFX 捆绑在一起,可以为您节省大量配置。 https://bell-sw.com/pages/downloads/#/java-11-lts 只需要下载“完整的JDK”。
答案 3 :(得分:0)
很难找到与JavaFX打包在一起的官方预构建OpenJDK。这是我唯一能找到的: