Eclipse插件开发中操作过多引用如下错误问题:
!MESSAGE Unhandled event loop exception
!STACK 0
org.eclipse.swt.SWTError: No more handles
at org.eclipse.swt.SWT.error(SWT.java:4308)
at org.eclipse.swt.SWT.error(SWT.java:4197)
at org.eclipse.swt.SWT.error(SWT.java:4168)
at org.eclipse.swt.widgets.Display.internal_new_GC(Display.java:2673)
at org.eclipse.swt.graphics.Image.getImageData(Image.java:1371)
at org.eclipse.swt.graphics.Image.<init>(Image.java:269)
at org.eclipse.swt.widgets.ToolItem.updateImages(ToolItem.java:958)
at org.eclipse.swt.widgets.ToolItem.setEnabled(ToolItem.java:649)
at org.eclipse.jface.action.StatusLine.setCancelEnabled(StatusLine.java:511)
at org.eclipse.jface.action.StatusLineManager.setCancelEnabled(StatusLineManager.java:244)
at org.eclipse.jface.window.ApplicationWindow.run(ApplicationWindow.java:800)
at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2649)
at org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:285)
at org.eclipse.ui.internal.EditorManager.saveAll(EditorManager.java:1279)
at org.eclipse.ui.internal.EditorManager.saveAll(EditorManager.java:1050)
at org.eclipse.ui.internal.EditorManager.saveAll(EditorManager.java:1027)
解决办法:
1. 根据错误分析为图片问题
2. 原因为ImageDescriptor过多导致,将ImageDescriptor使用缓存机制进行读取即可