首页 > 解决方案 > 将 Windows 更新到 1903(2019 年 5 月)后 JavaFX 无法创建阶段

问题描述

我用 2019 年 5 月版本 (1903) 更新了我的 Windows 10 笔记本电脑,JavaFX 似乎不再工作了。启动任何 JavaFX 应用程序后,我在任务栏上看到一个图标,但没有创建任何窗口。我的 java 是最新的 Java 8,最新的 Eclipse 作为 IDE。

这是一个已知问题还是我做错了什么?是否有解决方法或修复方法?谢谢

我创建了一个重现问题的小应用程序。如果我注释掉以下行 primaryStage.initStyle(StageStyle.UNDECORATED); 然后它按预期工作。否则 Windows 10 (1903) 挂起,不显示任何窗口。请注意,您需要在 Windows 中使用任务管理器来杀死 JVM。

package com.alam33;

import java.io.IOException;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.stage.StageStyle;

public class Win10_1903Test extends Application {

    public Win10_1903Test() {

    }

    @Override
    public void start(Stage primaryStage) throws IOException {

        VBox vbox = new VBox();
        vbox.setPrefHeight(200);
        vbox.setPrefWidth(300);
        Scene scene = new Scene(vbox);
        primaryStage.setTitle("Win10_1903Test");
        primaryStage.setScene(scene);
        primaryStage.setFullScreen(true);

        /* THIS IS THE OFFENDING LINE */
        primaryStage.initStyle(StageStyle.UNDECORATED);

        primaryStage.show();

    }

    public static void main(String[] args) {

        launch(args);
    }

}

标签: javafxwindows-10-desktop

解决方案


这是 Oracle 提供的一种解决方法,尽管他们无法重现它。我怀疑这个问题是特定于我机器中的硬件的。

解决方法:添加 jvm 选项 -Dprism.order=sw

如下所述,这不是一个合适的解决方案,但我将其作为答案,因为它确实有助于确保您的代码正常,这在开发过程中很重要。


推荐阅读