简体   繁体   English

Eclipse Helios-“ java.lang.RuntimeException:部件放置得太早了!”

[英]Eclipse Helios - “java.lang.RuntimeException: Widget disposed too early!”

Hi I am running Eclipse Helios on Win XP. 嗨,我在Win XP上运行Eclipse Helios。
When I start it today, I get a message telling that Eclipse can not be started. 今天启动时,会收到一条消息,提示无法启动Eclipse。

Here is the content of the log file that was generated: 这是生成的日志文件的内容:

!SESSION 2011-03-24 19:28:51.296 -----------------------------------------------
eclipse.buildId=M20100909-0800
java.version=1.6.0_22
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=iw_IL
Framework arguments:  -product org.eclipse.epp.package.java.product
Command-line arguments:  -os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.java.product


!ENTRY org.eclipse.core.resources 2 10035 2011-03-24 19:28:52.609
!MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes.
!ENTRY org.eclipse.ui.workbench 4 0 2011-03-24 19:29:02.281
!MESSAGE Widget disposed too early!
!STACK 0
java.lang.RuntimeException: Widget disposed too early!
    at org.eclipse.ui.internal.WorkbenchPartReference$1.widgetDisposed(WorkbenchPartReference.java:172)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:123)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1058)
    at org.eclipse.swt.widgets.Widget.release(Widget.java:808)
    at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872)
    at org.eclipse.swt.widgets.Widget.release(Widget.java:811)
    at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872)
    at org.eclipse.swt.widgets.Widget.release(Widget.java:811)
    at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872)
    at org.eclipse.swt.widgets.Widget.release(Widget.java:811)
    at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872)
    at org.eclipse.swt.widgets.Canvas.releaseChildren(Canvas.java:167)
    at org.eclipse.swt.widgets.Decorations.releaseChildren(Decorations.java:773)
    at org.eclipse.swt.widgets.Shell.releaseChildren(Shell.java:1267)
    at org.eclipse.swt.widgets.Widget.release(Widget.java:811)
    at org.eclipse.swt.widgets.Widget.dispose(Widget.java:446)
    at org.eclipse.swt.widgets.Decorations.dispose(Decorations.java:447)
    at org.eclipse.swt.widgets.Shell.dispose(Shell.java:714)
    at org.eclipse.jface.window.Window.close(Window.java:335)
    at org.eclipse.jface.window.ApplicationWindow.close(ApplicationWindow.java:307)
    at org.eclipse.ui.internal.WorkbenchWindow.hardClose(WorkbenchWindow.java:1735)
    at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:734)
    at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:710)
    at org.eclipse.ui.internal.WorkbenchWindow$5.run(WorkbenchWindow.java:826)
    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
    at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:824)
    at org.eclipse.ui.internal.Workbench$65.runWithException(Workbench.java:3639)
    at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4041)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3660)
    at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803)
    at org.eclipse.ui.internal.Workbench$31.runWithException(Workbench.java:1567)
    at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4041)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3660)
    at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2548)
    at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
    at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1383)


!ENTRY org.eclipse.osgi 4 0 2011-03-24 19:29:02.812
!MESSAGE Application error
!STACK 1
org.eclipse.swt.SWTError: No more handles
    at org.eclipse.swt.SWT.error(SWT.java:4109)
    at org.eclipse.swt.SWT.error(SWT.java:3998)
    at org.eclipse.swt.SWT.error(SWT.java:3969)
    at org.eclipse.swt.internal.ImageList.copyWithAlpha(ImageList.java:175)
    at org.eclipse.swt.internal.ImageList.set(ImageList.java:405)
    at org.eclipse.swt.internal.ImageList.add(ImageList.java:66)
    at org.eclipse.swt.widgets.ToolItem.updateImages(ToolItem.java:935)
    at org.eclipse.swt.widgets.ToolItem.setImage(ToolItem.java:708)
    at org.eclipse.ui.internal.PerspectiveBarContributionItem.fill(PerspectiveBarContributionItem.java:87)
    at org.eclipse.jface.action.ToolBarManager.update(ToolBarManager.java:353)
    at org.eclipse.ui.internal.PerspectiveBarManager.addItem(PerspectiveBarManager.java:189)
    at org.eclipse.ui.internal.PerspectiveSwitcher.addPerspectiveShortcut(PerspectiveSwitcher.java:262)
    at org.eclipse.ui.internal.PerspectiveSwitcher.access$1(PerspectiveSwitcher.java:254)
    at org.eclipse.ui.internal.PerspectiveSwitcher$ChangeListener.perspectiveOpened(PerspectiveSwitcher.java:163)
    at org.eclipse.ui.internal.PerspectiveListenerList$7.run(PerspectiveListenerList.java:192)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.core.runtime.Platform.run(Platform.java:888)
    at org.eclipse.ui.internal.PerspectiveListenerList.fireEvent(PerspectiveListenerList.java:58)
    at org.eclipse.ui.internal.PerspectiveListenerList.firePerspectiveOpened(PerspectiveListenerList.java:190)
    at org.eclipse.ui.internal.WorkbenchWindow.firePerspectiveOpened(WorkbenchWindow.java:1499)
    at org.eclipse.ui.internal.WorkbenchPage$17.runWithException(WorkbenchPage.java:3222)
    at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4041)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3660)
    at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803)
    at org.eclipse.ui.internal.Workbench$31.runWithException(Workbench.java:1567)
    at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4041)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3660)
    at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2548)
    at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
    at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1383)

Any idea how to solve it? 知道如何解决吗?

Thanks 谢谢

Avishay Avishay

This problem occurs with XUL Runner runtime environment versions later than 1.9.0.x, for example, version 1.9.1. 高于1.9.0.x的XUL Runner运行时环境版本(例如,版本1.9.1)会发生此问题。

You can determine the configured version of XUL Runner runtime environment by running the following command: 您可以通过运行以下命令来确定XUL Runner运行时环境的配置版本:

xulrunner -v

Edit the eclipse.ini file. 编辑eclipse.ini文件。 Locate the -vmargs line and add a new line to specify the version of the XUL Runner runtime environment using this syntax: 找到-vmargs行,并添加新行以使用以下语法指定XUL Runner运行时环境的版本:

-Dorg.eclipse.swt.browser.XULRunnerPath=/usr/lib/xulrunner-1.9.x.x

For me, increasing --launcher.XXMaxPermSize 256m to 512m in eclipse.ini worked. 对我来说,将eclipse.ini --launcher.XXMaxPermSize 256m增加到512m--launcher.XXMaxPermSize This issue came once Eclipse loaded with many plugins and features due to which Eclipse needed extra space while loading these new plugins/features during startup. 一旦Eclipse加载了许多插件和功能,就会出现此问题,由于Eclipse在启动期间加载这些新的插件/功能时需要额外的空间。

All the bugs reporting this kind of message (like bug 260772 or bug 239681 ) mention XulRunner : you wouldn't have installed it recently? 所有报告此类消息的bug (例如bug 260772bug 239681 )都提到XulRunner :您最近不会安装它吗?

Eclipse/SWT 3.4 supports any mozilla/seamonkey/xulrunner/firefox-iff-dynamically-linked >= mozilla 1.4. Eclipse / SWT 3.4支持任何mozilla / seamonkey / xulrunner / firefox-iff-dynamic-linked> = mozilla 1.4。

Starting with FireFox3, a private xulrunner is shipped with FireFox for its use, however this is not a full install that the Browser can be pointed at independent of the FireFox that it came with. 从FireFox3开始,FireFox附带了一个专用的xulrunner供其使用,但是这并不是一个完整的安装,浏览器可以独立于其附带的FireFox指向它。
But if the FireFox is dynamically linked, then the Browser can use it (the FireFox), and the fact that a private xulrunner is being used by the FireFox to do its work is just an implementation detail that the Browser doesn't know/care about. 但是,如果FireFox是动态链接的,则浏览器可以使用它(FireFox),并且FireFox使用私有的xulrunner来执行其工作这一事实只是浏览器不知道/不在乎的实现细节关于。

If you have xulrunner 1.9~b5+nobinonly-0ubuntu3 installed - then Eclipse 3.4 doesn't work - and it doesn't seem to matter what versions of FireFox you install or uninstall 如果您安装了xulrunner 1.9〜b5 + nobinonly-0ubuntu3-那么Eclipse 3.4无法正常工作-安装或卸载哪个版本的FireFox似乎都不重要


The other cause is related to some workspace corruption, which might explain why the OP balderman comments: 另一个原因与某些工作空间损坏有关,这可能解释了为什么OP balderman评论:

I found a way to start eclipse by commenting out the line: RECENT_WORKSPACES=bla bla in the file org.eclipse.ui.ide.prefs : as the question " How to delete obsolete workspace in RAD? ", that don't actually delete a workspace, but allows to skip one which could have some kind of corruption issue. 我找到了一种通过注释以下行开始Eclipse的方法:文件org.eclipse.ui.ide.prefs中的RECENT_WORKSPACES=bla bla :作为问题“ 如何在RAD中删除过时的工作区? ”,实际上并没有删除一个工作空间,但允许跳过可能存在某种损坏问题的工作空间。

Do you get: 你得到:

org.eclipse.swt.SWTError: No more handles

Every time you start? 每次开始? This means Eclipse is running out of operating system resources, do you have many other applications open? 这意味着Eclipse耗尽了操作系统资源,您是否还打开了许多其他应用程序? Try shutting down some other applications you have running. 尝试关闭正在运行的其他一些应用程序。

If you DON'T have many other applications running you may want to consider looking at sleak, the eclipse plug-in that monitors handle usage of eclipse and eclipse RCPs. 如果您没有运行其他许多应用程序,则可能需要考虑查看sleak,它是用于监视处理eclipse和eclipse RCP使用情况的eclipse插件。

Are you running plain Eclipse, or have you installed many plug-ins? 您是在运行纯Eclipse,还是已安装了许多插件? I'd be very surprised if vanilla Eclipse ran out of handles...it's more likely to be caused by a plug-in (in my experience anyway). 如果香草Eclipse用完了,我会感到非常惊讶...这很可能是由插件引起的(无论如何,根据我的经验)。

  1. backup "..\\.metadata.plugins\\org.eclipse.core.resources" forler 备份“ .. \\ .. metadata.plugins \\ org.eclipse.core.resources” forler
  2. empty "..\\.metadata.plugins\\org.eclipse.core.resources\\.safetable\\org.eclipse.core.resources" file 空的“ .. \\ .. metadata.plugins \\ org.eclipse.core.resources \\ .safetable \\ org.eclipse.core.resources”文件
  3. run Flex. 运行Flex。 Your project list will be empty 您的项目列表将为空
  4. close Flex 关闭Flex
  5. restore "..\\.metadata.plugins\\org.eclipse.core.resources" folder(overwrite all) 恢复“ .. \\ .. metadata.plugins \\ org.eclipse.core.resources”文件夹(全部覆盖)
  6. run Flex. 运行Flex。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM