Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试在调用Platform.exit()后打开JavaFX阶段_Java_Javafx - Fatal编程技术网

尝试在调用Platform.exit()后打开JavaFX阶段

尝试在调用Platform.exit()后打开JavaFX阶段,java,javafx,Java,Javafx,调用Platform.exit()后,我无法创建新阶段或再次启动应用程序 我调用Platform.exit()返回启动JavaFX应用程序的代码 java.lang.IllegalStateException: Not on FX application thread; currentThread = main at com.sun.javafx.tk.Toolkit.checkFxUserThread(Toolkit.java:237) at com.sun.javafx.tk

调用Platform.exit()后,我无法创建新阶段或再次启动应用程序

我调用Platform.exit()返回启动JavaFX应用程序的代码

java.lang.IllegalStateException: Not on FX application thread; currentThread = main
    at com.sun.javafx.tk.Toolkit.checkFxUserThread(Toolkit.java:237)
    at com.sun.javafx.tk.quantum.QuantumToolkit.checkFxUserThread(QuantumToolkit.java:400)
    at javafx.stage.Stage.<init>(Stage.java:212)
    at javafx.stage.Stage.<init>(Stage.java:198)
    at com.m.Main.replaceSceneContent(Main.java:187)
    at com.m.Main.GotoMessage(Main.java:253)
java.lang.IllegalStateException:不在FX应用程序线程上;currentThread=main
位于com.sun.javafx.tk.Toolkit.checkFxUserThread(Toolkit.java:237)
位于com.sun.javafx.tk.quantum.QuantumToolkit.checkFxUserThread(QuantumToolkit.java:400)
在javafx.stage.stage.(stage.java:212)
在javafx.stage.stage.(stage.java:198)
位于com.m.Main.replaceSceneContent(Main.java:187)
在com.m.Main.GotoMessage上(Main.java:253)

谁能告诉我调用Platform.exit()后会发生什么事?我们不能重新启动应用程序吗?

如例外情况所示……您不在FX应用程序线程上。使用
Platform.runLater()

在线程上调用
Platorm.exit()
,如异常所示……您不在FX应用程序线程上。使用
Platform.runLater()
在线程上调用
Platorm.exit()
,正如Javadoc所说,Platform.exit()终止JavaFX应用程序线程

最好不要调用Platform.exit(),除非您真的想关闭JavaFX。 关闭JavaFX后,必须使用Application.launch()方法重新启动它。 我想最好是关上窗户


请注意,对于
Platform.setImplicitExit(false)即使所有窗口都关闭了,也可以阻止JavaFX关闭。

正如Javadoc所说,Platform.exit()终止JavaFX应用程序线程

最好不要调用Platform.exit(),除非您真的想关闭JavaFX。 关闭JavaFX后,必须使用Application.launch()方法重新启动它。 我想最好是关上窗户



请注意,对于
Platform.setImplicitExit(false)
即使所有窗口都已关闭,也可以阻止JavaFX关闭。

是否尝试覆盖
应用程序。stop()
?它将在您调用
Platform.exit()
时执行。为什么要在调用Platform.exit之后打开一个stage?@Puce我需要在它之后给用户一条消息您想在关闭JavaFX之后给使用JavaFX的用户一条消息?什么样的信息?可以在关闭JavaFX之前提供它吗?您能在日志文件中提供它吗?用户在第一个场景中输入了一些细节,需要在后端进行检查,因此我在这里调用Platform.exit()返回启动位置,如果细节不正确,将显示消息,说明什么细节不正确。@PuceHave您是否尝试覆盖
应用程序。stop()
?它将在您调用
Platform.exit()
时执行。为什么要在调用Platform.exit之后打开一个stage?@Puce我需要在它之后给用户一条消息您想在关闭JavaFX之后给使用JavaFX的用户一条消息?什么样的信息?可以在关闭JavaFX之前提供它吗?您能在日志文件中提供它吗?用户在第一个场景中输入了一些细节,需要在后端进行检查,因此我在这里调用Platform.exit()返回启动位置,如果细节不正确,将显示消息说什么细节不正确。@Puceit没有帮助我@CAGYou必须更具体一些。问题是什么?不变?有什么新的东西吗?经过进一步的审查,我怀疑我的回答是错的,但唯一能知道的是,我是否看到了更多的源代码,特别是与您的异常中引用的行相关的源代码。这对我没有帮助@cague,您必须更具体一些。问题是什么?不变?新内容?经过进一步审查,我怀疑我的回答有误,但唯一能知道的是我是否看到了更多的源代码,特别是与您的异常中引用的行相关的源代码。输入表单详细信息后,我需要返回Application.launch place。如何在不调用Platform.exit()的情况下实现这一点?您可以在单独的线程中调用Application.launch,并以某种方式阻止主thrad,直到获得所有必要的信息。或者您可以先启动Application.launch,然后在后台线程中执行其他操作。这真的取决于很多事情…这是一个救命恩人!我有一个JavaFXWebView,可以用来获取cookie。收到cookie后,我关闭窗口并加载其他元素。出于某种原因,在这些操作之间,JavaFX线程关闭,我会得到一个“toolkit has exited”异常。调用Platform.setImplicitExit(false)可以防止JavaFX线程在不应该关闭的情况下关闭,从而解决了我的问题。输入表单详细信息后,我需要返回Application.launch位置。如何在不调用Platform.exit()的情况下实现这一点?您可以在单独的线程中调用Application.launch,并以某种方式阻止主thrad,直到获得所有必要的信息。或者您可以先启动Application.launch,然后在后台线程中执行其他操作。这真的取决于很多事情…这是一个救命恩人!我有一个JavaFXWebView,可以用来获取cookie。收到cookie后,我关闭窗口并加载其他元素。出于某种原因,在这些操作之间,JavaFX线程关闭,我会得到一个“toolkit has exited”异常。调用Platform.setImplicitExit(false)可以防止JavaFX线程在不应该关闭的情况下关闭,从而解决了我的问题。