簡體   English   中英

結束Swing應用程序時出現JavaFX錯誤

[英]JavaFX error when ending Swing application

我有一個Swing應用程序,需要在其中顯示內部生成的HTML / CSS。 為了做到這一點,我改編了這個StackOverflow問題中的代碼

該控件工作正常。 但是,當應用程序結束時,我收到錯誤消息

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f9622171ae8, pid=5782, tid=140283095549696

就其價值而言,直接來自Oracle的示例代碼(在StackOverflow帖子中引用)具有相同的問題。

我已嘗試在窗口關閉時顯式調用Platform.exit() ,但錯誤仍然存​​在。 那么,當JavaFX嵌入到Swing應用程序中時,如何正確關閉它呢?

好的,至少在此應用程序中,我找到了解決方案:

  • 這是一個多窗口應用程序; JavaFX組件不在主應用程序窗口中,而是在子窗口中。

  • JavaFX“平台”的設置為“ ImplicitExit”,默認情況下為“ true”。

  • 顯然,在關閉子窗口時和在關閉主應用程序時都將調用JavaFX Platform.exit()。 第二個調用(當應用程序關閉時)生成原始問題中描述的錯誤消息。

  • 在任何情況下,“隱式退出”行為都是不可取的,因為它阻止了在應用程序的生命周期中再次打開子窗口。

因此,解決方案是關閉“隱式出口”。 這是子窗口中的JavaFX初始化代碼:

Platform.runLater(new Runnable() {
    @Override public void run() {
        view = new WebView();
        engine = view.getEngine();
        jfxPanel.setScene(new Scene(view));
        Platform.setImplicitExit(false); // Otherwise cannot open report window a second time
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM