带有Java Swing(IntelliJ插件)的JxBrowser;接收到的信号10总线“U ADRERR”;

带有Java Swing(IntelliJ插件)的JxBrowser;接收到的信号10总线“U ADRERR”;,java,swing,intellij-plugin,jxbrowser,Java,Swing,Intellij Plugin,Jxbrowser,我正在编写一个IntelliJ插件,并试图通过JavaSwing将JxBrowser集成到插件的工具窗口中 我使用toolWindow扩展来保持工具窗口集成的简单性 plugin.xml <extensions defaultExtensionNs="com.intellij"> <toolWindow id="pluginid" anchor="right" factoryClass="com.solutionloft.codeclippy.MainWindowF

我正在编写一个IntelliJ插件,并试图通过JavaSwing将JxBrowser集成到插件的工具窗口中

我使用toolWindow扩展来保持工具窗口集成的简单性

plugin.xml

  <extensions defaultExtensionNs="com.intellij">
    <toolWindow id="pluginid" anchor="right" factoryClass="com.solutionloft.codeclippy.MainWindowFactory" />
  </extensions>
我是否错过了一些清理步骤?我不确定还有什么可以继续运行——目前我找到的唯一解决办法是完全重新启动计算机,所以我想一定是某个进程仍在运行,导致冲突。正确的清理方法是什么?它是否与
browser.dispose()
有关?我还没有很幸运地找到有关何时
.dispose()
合适/如果需要的文档

我正在使用:
*macOS High Sierra
*Java 1.8.0_151作为我的JDK
*PyCharm Ultimate作为我的JRE

谢谢


更新:注意到如果我杀死这个进程
/System/Library/Frameworks/LocalAuthentication.framework/Support/coreauthd
,问题会在接下来的几次运行中消失。但有时候这个进程并不存在,杀掉一个仍在运行的java进程就是解决办法。。。奇怪。

根据,所有浏览器实例都应该在您不需要它们时进行处理。请在关闭应用程序之前尝试处理所有浏览器实例。

根据TeamDev支持,解决方案是设置系统属性
jxbrowser.ipc.external=true
。在创建浏览器实例之前调用
System.setProperty(“jxbrowser.ipc.external”,“true”)
应该可以做到这一点。问题是JxBrowser将以轻量级模式运行


您还可以确保通过
browser.dispose()
正确地处理所有浏览器实例,并通过
BrowserCore.shutdown()正确地处理Chromium引擎,我将更深入地探讨使用Swing/IntelliJ IDEA实现这一点的正确方法,但这似乎还不够。如果应用程序不正常关闭怎么办?或者,如果用户希望运行应用程序的两个独立实例,该怎么办?这两种情况似乎都无法通过某种关闭钩子处理来修复。JxBrowser库确实具有关闭钩子功能,可以在应用程序终止时正确停止所有浏览器实例。终止进程后,请检查process manager中是否有任何浏览器核心进程?如在我的系统中,有一个名为browser core的进程?即使在应用程序运行时,
ps-A | grep browser core
也没有结果。很抱歉,这会造成误导。请在终止流程后,以及在您观察到上述问题时,尝试使用包含在“browsercore”或“browser”中的名称检查流程。
public class MainWindowFactory implements ToolWindowFactory {

    @Override
    public void createToolWindowContent(@NotNull Project project, @NotNull ToolWindow toolWindow) {
        Browser browser = new Browser();
        BrowserView view = new BrowserView(browser);
        Content content = toolWindow.getContentManager().getFactory().createContent(view, "", false);
        toolWindow.getContentManager().addContent(content);

        browser.loadHTML("<html><body><h1>Hello World!</h1></body></html>");
    }
}
Received signal 10 BUS_ADRERR 000103bc3000
 [0x00017cd9540c]
 [0x00017cd95301]
 [0x7fff572eef5a]
 [0x7fbe7e9f5000]
[end of stack trace]

Process finished with exit code 138 (interrupted by signal 10: SIGBUS)