我正在写的IntelliJ插件,并试图JxBrowser融入通过的Java Swing插件的工具窗口。
我使用的工具窗口延伸到保持工具窗口整合简单。
plugin.xml中
<extensions defaultExtensionNs="com.intellij">
<toolWindow id="pluginid" anchor="right" factoryClass="com.solutionloft.codeclippy.MainWindowFactory" />
</extensions>
所以我的主要工厂类看起来是这样的:
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>");
}
}
这似乎当我在本地运行的插件开始工作(工具窗口出现时,我可以看到的Hello World),但如果我终止该进程,然后尝试再次运行它,我碰到这个错误:
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)
我缺少某种清理步骤?我不知道什么可能仍在运行 - 我在这一点上发现的唯一的解决方法是做一个完全的计算机重新启动,所以我想一些进程必须仍在运行,就是这样造成的冲突。什么是清理的正确方法?它有什么关系browser.dispose()
?我没有多少运气上查找文档时.dispose()
将是适当的/如果它是必要的。
我正在使用: * MacOS的海伊谢拉 * Java的1.8.0_151我的JDK * PyCharm最终为我的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()
的铬引擎所有浏览器实例。
按照article,当你不需要他们所有浏览器实例应配置。请尝试关闭您的应用程序之前,处置所有浏览器实例。