将Windows更新到1903年(2019年5月)后,JavaFX无法创建后台

将Windows更新到1903年(2019年5月)后,JavaFX无法创建后台,javafx,windows-10-desktop,Javafx,Windows 10 Desktop,我用2019年5月的版本(1903年)更新了我的Windows10笔记本电脑,JavaFX似乎不再工作了。启动任何JavaFX应用程序后,我在任务栏上看到一个图标,但没有创建任何窗口。我的java是最新的Java8,最新的Eclipse作为IDE 这是一个已知的问题还是我做错了什么?是否有解决方案或修复方案? 谢谢 我已经创建了一个小应用程序来重现这个问题。 如果我把下面这行注释掉 初级阶段。初始风格(阶段风格。未装饰); 然后它就如预期的那样工作了。否则Windows 10(1903)将挂起,

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

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

我已经创建了一个小应用程序来重现这个问题。 如果我把下面这行注释掉 初级阶段。初始风格(阶段风格。未装饰); 然后它就如预期的那样工作了。否则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);
    }

}

这是Oracle提供的一种变通方法,尽管他们无法复制它。我怀疑这个问题与我的机器中的硬件有关

解决方法:添加jvm选项 -朝鲜秩序=西南


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

你应该在这里报告这是一个bug:是的,我做了,它刚刚被Oracle接受。甲骨文公司已经关闭了这个漏洞,声称它是不可复制的。但是我可以在两台不同的机器上复制。我的猜测是,我可能正在使用Windows“classic”桌面和其他一些触发挂起的Windows个性化设置。我让Oracle再看一看,为他们提供stackdump,这次他们让我尝试一个vm选项,这解决了问题(尽管他们无法在他们这方面复制它)。我怀疑这是一个非常特定于硬件的问题,但至少我们现在有了解决办法。如果存在此问题,请向VM添加以下选项-Dprism.order=swWell,我不认为这是一个解决办法。它只是关闭了所有的图形硬件加速,这使得整个系统只能用于琐碎的渲染任务。我想这只是为了确保这是一个硬件渲染问题。你可能是对的,我对底层硬件了解不多。我希望甲骨文以后能把它修好。