Eclipse 2022-09中E4 Handler调用MessageDialog触发Widget disposed异常求助
Eclipse 2022-09中MessageDialog点击OK触发Widget is disposed异常的解决办法
问题场景
执行以下代码弹出错误对话框,点击OK按钮时抛出Widget is disposed异常,且所有对话框均存在该问题,仅在Eclipse 2022-09版本中出现:
public void execute(Shell shell, @Named(IServiceConstants.ACTIVE_PART) MPart aPart, @Named(IServiceConstants.ACTIVE_SELECTION) @Optional List<?> selection) { MessageDialog.openError(shell, "Error", "test"); }
异常栈
org.eclipse.swt.SWTException: Widget is disposed at org.eclipse.swt.SWT.error(SWT.java:4918) at org.eclipse.swt.SWT.error(SWT.java:4833) at org.eclipse.swt.SWT.error(SWT.java:4804) at org.eclipse.swt.widgets.Widget.error(Widget.java:450) at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:369) at org.eclipse.swt.widgets.Button.getSelection(Button.java:623) at org.eclipse.e4.ui.css.swt.dom.ButtonElement$1.widgetSelected(ButtonElement.java:37) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:252) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4251) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4068) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3645) at org.eclipse.jface.window.Window.runEventLoop(Window.java:823) at org.eclipse.jface.window.Window.open(Window.java:799) at org.eclipse.jface.dialogs.MessageDialog.open(MessageDialog.java:609) at org.eclipse.jface.dialogs.MessageDialog.open(MessageDialog.java:405) at org.eclipse.jface.dialogs.MessageDialog.openError(MessageDialog.java:491)
问题分析
从异常栈可见,异常由org.eclipse.e4.ui.css.swt.dom.ButtonElement模块触发:对话框关闭时按钮控件已被销毁,但CSS监听逻辑仍尝试调用Button.getSelection()方法,导致控件已释放的错误。这是Eclipse 2022-09版本中CSS SWT桥接模块的已知bug。
解决方案
- 临时规避:切换到非CSS主题(如Eclipse Classic主题),关闭主题的CSS渲染功能。操作路径:
Window > Preferences > General > Appearance,选择Classic主题后重启Eclipse。 - 彻底修复:升级Eclipse到2022-12或更高版本,该bug在后续版本中已被官方修复。
- 自定义样式排查:若使用了自定义CSS样式,移除所有针对Button的自定义规则,测试是否为样式冲突导致问题。
内容的提问来源于stack exchange,提问作者HyperNova777
相关产品推荐
相关产品推荐

