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

Han*_*nes 16 java javafx javafx-8 openjfx

如果我理解Oracle的公告,JavaKX将不会从JDK 11开始包含在JDK中,并且只能作为OpenJFX使用.

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

Jos*_*eda 15

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

<dependencies>
    <dependency>
        <groupId>javafx</groupId>
        <artifactId>javafx.controls</artifactId>
        <version>11.0.0</version>
    </dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

或Gradle:

dependencies {
    compile 'javafx:javafx.controls:11.0.0'
}
Run Code Online (Sandbox Code Playgroud)

到目前为止(2018年6月),这是正在进行的工作,但它应该在JDK 11 发布时准备好.

现在你可以从下载的JavaFX SDK独立的早期版本在这里,作为宣布最近(五月2018) .

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

您将找到一堆具有不同模块的罐子,javafx.base.jar或者javafx.controls.jar,以及您的平台所需的本机库.

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

样品

如果您有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();
    }
}
Run Code Online (Sandbox Code Playgroud)

你可以编译它:

<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
Run Code Online (Sandbox Code Playgroud)

并运行它:

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
Run Code Online (Sandbox Code Playgroud)

JavaFX 11