当前位置: 首页 > 知识库问答 >
问题:

javaFX警报引发无法捕获的非法状态异常?

柯正谊
2023-03-14

在包含JavaFX警报的类上运行一些单元测试,我实现了以下try-的块:

    try{
    if(warning){
        //CONSIDER:  Make a generic alert call for any situation, pass args 
        Alert alert = new Alert(AlertType.WARNING);
        alert.setTitle("User Warning");
        alert.setHeaderText(null);
        alert.setContentText("The following elements were not found for the code you are outputting and are printed, as is"
                + "\n\n" + errorList
                + "\n\n(This should be updated to Z000 format) ");
        alert.showAndWait();
    }}
    //throws error when invoked from a non javaFX context
    catch(IllegalStateException e){        
        System.out.println("The following elements were not found for the code you are outputting and are printed, as is"
                + "/n/n" + errorList
                + "/n/n(This should be updated to Z000 format)");
    }

在对也没有修复它的调用代码进行顶级尝试捕获之后。

叠:

Exception in thread "main" java.lang.ExceptionInInitializerError
    at javafx.scene.control.DialogPane.createContentLabel(DialogPane.java:166)
    at javafx.scene.control.DialogPane.<init>(DialogPane.java:217)
    at javafx.scene.control.Dialog.<init>(Dialog.java:478)
    at javafx.scene.control.Alert.<init>(Alert.java:245)
    at javafx.scene.control.Alert.<init>(Alert.java:223)
    at gov.ornl.nstd.datatools.OutputFormatter.verifyAndNorm(OutputFormatter.java:385)
    at gov.ornl.nstd.datatools.OutputFormatter.convert(OutputFormatter.java:218)
    at gov.ornl.nstd.datatools.Testing.TestAllOutputs.main(TestAllOutputs.java:49)
Caused by: java.lang.IllegalStateException: Toolkit not initialized
    at com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:273)
    at com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:268)
    at com.sun.javafx.application.PlatformImpl.setPlatformUserAgentStylesheet(PlatformImpl.java:550)
    at com.sun.javafx.application.PlatformImpl.setDefaultPlatformUserAgentStylesheet(PlatformImpl.java:512)
    at javafx.scene.control.Control.<clinit>(Control.java:87)
    ... 8 more

有什么方法可以解决这个问题?

我从错误中得到的是,没有JavaFX场景/舞台可以与警报关联,但我不确定如何处理这一点。

共有2个答案

糜征
2023-03-14

解决问题就像在运行测试的类中扩展应用程序一样简单。

这不会生成警报框,但可以避免崩溃。

编辑:这使警报未处理,需要强制退出进程。

吉玉石
2023-03-14

JavaFX在启动时执行“隐藏”初始化。作为单元测试运行警报不会触发初始化。触发它的最简单方法是执行Application.launch()。还有其他方法,您可以查看一些链接

  • JavaFX:“工具包”未初始化
  • 工具包未初始化
  • 工具包问题
 类似资料:
  • 问题内容: 这是我的用法- 另外,我在http GET周围放置了一个finally块- 这是我的堆栈跟踪- 我正在使用Quartz计划监视Http端点的工作。这是我的连接池配置 Maven依赖..工件版本 编辑 -好吧,通过不关闭finally块中的CloseableHttpClient,问题解决了。有人能说出为什么这样吗? 如果关闭客户端,为什么连接池会关闭? 是上面的closeablehttp

  • 我无法在Spring中捕获异步方法抛出的异常。我已经编写了一个未捕获的异常处理程序来捕获,但没有成功。该应用程序将启用启动任意数量的永远运行的异步作业。我认为我的异步方法需要返回Future,以便我可以将其存储在hashmap中并检查其状态或停止作业。我也可以通过存储它来获取所有正在运行的作业。我认为我不能使用get method of Future,因为如果输入正确,它会阻塞,我的作业将永远运行

  • 所以 我有一个函数,有一个回调,所以我把它包装在一个挂起函数使用,但当它错误了,它是崩溃整个应用程序。 这里有一个概念是正在发生的事情。 2022-03-04 16:09:45.410 19289-19438/in.app.androidE/AndreidRuntime: FATAL EXCEPTION: DefaultDispatcher-Worers-3进程:in.app.android,PI

  • TestController使用一个TestService,它有一个Spring@async asyncComp.getGood(s)方法。当输入字符串不是“good”时,会引发异常。TestController将获得异常,在其余响应中,状态500内部服务器错误。我找不到我项目的确切代码,但找到了一些关于使用CompletableFuture的想法。在答案区域,我发布了我写的作为测试应用程序的内容

  • 问题内容: 如何将轮询线程传递给另一个线程进行处理。程序执行在具有主方法和线程池的控制器类中: 主类控制器 具有轮询类的线程的方法 具有proc类的线程的方法 轮询类和控制器类 我的任务和问题是: 1.控制器应同时处理轮询器和处理器线程,并且应仅调用轮询器和处理器线程 2.现在我的问题是如何使轮询线程等待3秒并并行通知处理器。 我得到如下错误: 这里如何实现异步处理? 问题答案: 你需要阅读的东西

  • 我正在尝试使用下面的快速加载API 连接…等是完美的。 我确切地知道它在哪里失败 例外情况是 < code >线程“main”Java . lang . illegalstateexception中出现异常:示例失败。 这是我试图上传的表格。它是格式,当我通过记事本打开它时,它看起来像这样 为什么我会得到这个异常?我该如何改进?据我理解问题是< code > pstmtfld . setascii