`
aegoose
  • 浏览: 40046 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Eclipse启动时弹出空白提示框(Widget disposed too early)

阅读更多

想使用eclipse来尝试开发Android, 结果eclipse classic版本在ubuntu下竟然挂了,找了许久才找到solution, 做个标记。

 

系统环境:

        ubuntu 10.04 (从9.10中更新而来的)

        eclipse-java-ganymede-linux-gtk


现象:
      启动eclipse classic版本,最后只弹一个空白提示框,无法 [关闭] 或 [确定]

出错日志分析:

      查看工作空间下的".metadata/.log",报错信息主要有以下两方面:


            java.lang.RuntimeException: Widget disposed too early!


            org.eclipse.swt.SWTError: XPCOM error -2147467262

 

java.lang.RuntimeException: Widget disposed too early!
	at org.eclipse.ui.internal.WorkbenchPartReference$1.widgetDisposed(WorkbenchPartReference.java:171)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:117)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1158)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1182)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1163)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:1026)
	at org.eclipse.swt.widgets.Control.release(Control.java:3217)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:1184)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:1029)
	at org.eclipse.swt.widgets.Control.release(Control.java:3217)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:1184)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:1029)
	at org.eclipse.swt.widgets.Control.release(Control.java:3217)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:1184)
	at org.eclipse.swt.widgets.Canvas.releaseChildren(Canvas.java:211)
	at org.eclipse.swt.widgets.Decorations.releaseChildren(Decorations.java:466)
	at org.eclipse.swt.widgets.Shell.releaseChildren(Shell.java:1948)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:1029)
	at org.eclipse.swt.widgets.Control.release(Control.java:3217)
	at org.eclipse.swt.widgets.Widget.dispose(Widget.java:442)
	at org.eclipse.swt.widgets.Shell.dispose(Shell.java:1893)
	at org.eclipse.swt.widgets.Display.release(Display.java:3083)
	at org.eclipse.swt.graphics.Device.dispose(Device.java:237)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:129)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
	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:382)
	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:549)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
 
org.eclipse.swt.SWTError: XPCOM error -2147467262
	at org.eclipse.swt.browser.Mozilla.error(Mozilla.java:1597)
	at org.eclipse.swt.browser.Mozilla.setText(Mozilla.java:1820)
	at org.eclipse.swt.browser.Browser.setText(Browser.java:737)
	at org.eclipse.ui.internal.intro.impl.presentations.BrowserIntroPartImplementation.generateContentForPage(BrowserIntroPartImplementation.java:252)
	at org.eclipse.ui.internal.intro.impl.presentations.BrowserIntroPartImplementation.dynamicStandbyStateChanged(BrowserIntroPartImplementation.java:451)
	at org.eclipse.ui.internal.intro.impl.presentations.BrowserIntroPartImplementation.doStandbyStateChanged(BrowserIntroPartImplementation.java:658)
	at org.eclipse.ui.internal.intro.impl.model.AbstractIntroPartImplementation.standbyStateChanged(AbstractIntroPartImplementation.java:249)
	at org.eclipse.ui.internal.intro.impl.model.IntroPartPresentation.standbyStateChanged(IntroPartPresentation.java:443)
	at org.eclipse.ui.intro.config.CustomizableIntroPart.standbyStateChanged(CustomizableIntroPart.java:266)
	at org.eclipse.ui.internal.ViewIntroAdapterPart$2.run(ViewIntroAdapterPart.java:74)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.ViewIntroAdapterPart.setStandby(ViewIntroAdapterPart.java:70)
	at org.eclipse.ui.internal.ViewIntroAdapterPart$1.propertyChanged(ViewIntroAdapterPart.java:55)
	at org.eclipse.ui.internal.WorkbenchPartReference.fireInternalPropertyChange(WorkbenchPartReference.java:374)
	at org.eclipse.ui.internal.WorkbenchPartReference.fireZoomChange(WorkbenchPartReference.java:539)
	at org.eclipse.ui.internal.PartPane.setZoomed(PartPane.java:349)
	at org.eclipse.ui.internal.PartStack.setZoomed(PartStack.java:1526)
	at org.eclipse.ui.internal.PartSashContainer.zoomIn(PartSashContainer.java:884)
	at org.eclipse.ui.internal.PartSashContainer.childRequestZoomIn(PartSashContainer.java:905)
	at org.eclipse.ui.internal.LayoutPart.requestZoomIn(LayoutPart.java:354)
	at org.eclipse.ui.internal.PartStack.setState(PartStack.java:1501)
	at org.eclipse.ui.internal.WorkbenchPage.setState(WorkbenchPage.java:3872)
	at org.eclipse.ui.internal.WorkbenchPage.toggleZoom(WorkbenchPage.java:3944)
	at org.eclipse.ui.internal.WorkbenchIntroManager.setIntroStandby(WorkbenchIntroManager.java:201)
	at org.eclipse.ui.internal.WorkbenchIntroManager.showIntro(WorkbenchIntroManager.java:136)
	at org.eclipse.ui.application.WorkbenchWindowAdvisor.openIntro(WorkbenchWindowAdvisor.java:173)
	at org.eclipse.ui.internal.ide.application.IDEWorkbenchWindowAdvisor.openIntro(IDEWorkbenchWindowAdvisor.java:458)
	at org.eclipse.ui.internal.WorkbenchWindow.open(WorkbenchWindow.java:777)
	at org.eclipse.ui.internal.Workbench$22.runWithException(Workbench.java:1041)
	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:133)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3378)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3036)
	at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803)
	at org.eclipse.ui.internal.Workbench$27.runWithException(Workbench.java:1361)
	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:133)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3378)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3036)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2293)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
	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:382)
	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:549)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1236)

 


分析:

      以前运行过eclipse-jee版本,并无出现此问题,所以多数情况与classic版本带的swt相关。

 

      尝试修改eclipse用一个启动脚本启动(eclipse-win.sh),使之以window窗体模式启动,但无效。         

 

#!/bin/sh
export GDK_NATIVE_WINDOWS=1
/home/lsm/web/eclipse/eclipse
(以上脚本可以解决eclipse中某些确认按钮无法按下去的问题
)

 


      借鉴网上的解决方案:

            https://www-304.ibm.com/support/docview.wss?uid=swg21265773 (英文)
            http://blog.sina.com.cn/s/blog_627399080100qnaj.html  (简单)
            http://sunshineyao.iteye.com/blog/836985

            https://bugzilla.redhat.com/show_bug.cgi?id=483832

      主要是因为firefox修改了xulrunner环境导致eclipse找不到xulrunner环境从而不能加载内置窗口。


解决方法(最简单):
       在eclipse.ini的vmargs后面加上
              -Dorg.eclipse.swt.browser.XULRunnerPath=/usr/lib/xulrunner

如下示例:
-showsplash
org.eclipse.platform
-framework
plugins/org.eclipse.osgi_3.4.0.v20080605-1900.jar
-vmargs
-Dorg.eclipse.swt.browser.XULRunnerPath=/usr/lib/xulrunner
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx256m
-XX:MaxPermSize=256m

 

       经尝试,当第一次能启动后,eclipse.ini部分配置会写在工作工间的".metadata"里。

       即使你删除了-Dorg.eclipse.swt.browser.XULRunnerPath=/usr/lib/xulrunner,eclipse仍然可以启动。

 

其他解决方法不深入研究。

 

 

总结:

      Eclipse不能启动,应当尝试去查看metadata里的日志信息,获取最直接的出错原因。

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    myeclipse打war包报security alert

    myeclipse打war包报错security alert integrity check error

    C#多线程之如何弹出一个模式窗口来显示进度条

    在本教程中,我们将探讨如何在C#中利用多线程技术来弹出一个模态窗口,展示进度条以提供用户友好的体验。 首先,理解"多线程"的概念是至关重要的。线程是程序的执行流,每个线程都有自己的执行上下文。在单线程应用...

    在Eclipse中用SWT设计界面

    在Eclipse中使用SWT设计界面,涉及到对SWT(Standard Widget Toolkit)的理解与掌握,以及如何在Eclipse环境中配置和使用SWT进行GUI开发。本文将深入解析SWT的起源、优势、基本组成,以及如何在Eclipse中进行环境...

    使用Eclipse进行SWT编程

    【使用Eclipse进行SWT编程】 SWT,全称Standard Widget Toolkit,是由IBM开发的一套跨平台的图形用户界面(GUI)开发框架。这个框架的诞生源于Java早期GUI框架的局限性。当时,Sun Microsystems已经推出了AWT...

    eclipse开发SWT应用

    在Eclipse中开发SWT应用,首先需要了解SWT提供的基本组件,如按钮(Button)、文本框(Text)、列表(List)、表格(Table)等,这些组件可以构建出丰富的用户交互界面。SWT的优势在于其与操作系统底层的紧密集成,...

    Standard Widget Toolkit(Java swt)类库以及安装文档

    **标准小部件工具包(Java SWT)类库详解与安装指南** Standard Widget Toolkit(SWT)是Java编程环境中用于创建图形...正确安装和配置SWT类库,结合Eclipse这样的IDE,可以更高效地开发出功能丰富的桌面应用程序。

    使用 SWT 写图形化界面的例子(eclipse)

    SWT(Standard Widget Toolkit)是Java编程中用于创建桌面应用程序用户界面的一种库,它是Eclipse IDE的基础组件之一。与Java的另一图形用户界面库AWT和Swing相比,SWT以其原生性能、高效和接近操作系统原生外观而受...

    Eclipse下SWT图形界面开发指南(1)

    本文将专注于 Eclipse 的两个主要组成部分:SWT(Simple Widget Toolkit)和 JFace。SWT 是一个图形库,而 JFace 则是一个与之相匹配的实用框架。通过这两个组件,即使是在 Eclipse 工作台之外,开发者也可以利用...

    swt资源释放问题

    需要注意的是,一个线程中不能同时有两个活动的 Display 实例存在,否则程序运行时会抛出一个 SWT 异常。如果需要创建多个同时活动的 Display 实例必须在不同的线程中创建它们,并使用 Display 的 getCurrent 函数...

    Eclipse中用SWT和JFace开发入门

    ### Eclipse中用SWT和JFace开发入门 #### 关键知识点概述 1. **SWT (Standard Widget Toolkit)** - SWT 是一个图形用户界面工具包,专为 Eclipse 平台设计,允许开发者构建高性能、视觉上类似原生操作系统的 GUI ...

    Eclipse中用SWT和JFace开发入门.doc

    ### Eclipse中用SWT和JFace开发入门 #### 一、引言 Eclipse平台以其强大的功能和灵活性闻名,尤其适合开发复杂的图形用户界面(GUI)应用程序。本文将深入探讨如何利用Standard Widget Toolkit (SWT) 和 JFace 库在...

    swt-界面设计

    1. **启动Eclipse**:首先确保已经安装并运行了Eclipse IDE。 2. **打开“帮助”菜单**:点击Eclipse主界面上方的“帮助”选项。 3. **选择“安装新软件”**:在弹出的下拉菜单中找到并点击“安装新软件”项。 4. **...

    Java中如何使用Draw2D和SWT绘图

    在Java编程中,Draw2D库是一个强大的工具,它允许开发者使用SWT(Standard Widget Toolkit)来创建复杂的图形用户界面,特别适用于绘制图形和图表。Draw2D是Eclipse项目的一部分,它提供了一套丰富的API,可以方便地...

    SWT运行环境的配置

    SWT(Standard Widget Toolkit)是Java编程环境中用于创建图形用户界面(GUI)的一个开源库,它是Eclipse项目的一部分。SWT提供了与操作系统更紧密的集成,使得Java应用程序能够具有更丰富的用户界面和更高的性能。...

    java内嵌浏览器源码.doc

    在Java中实现内嵌浏览器,我们可以利用Eclipse SWT(Standard Widget Toolkit)库中的`Browser`类。以下是一个关于如何使用SWT创建内嵌浏览器的详细说明: 1. **引入依赖**: 首先,你需要在项目中引入SWT库。对于...

    swt 开发

    SWT(Standard Widget Toolkit)是Java平台上的一款图形用户界面(GUI)工具包,它是Eclipse项目的一部分,旨在提供一个与原生操作系统界面更紧密集成的替代方案,相比于Java的默认GUI库AWT和Swing,SWT在性能和用户...

    PL/SQL Developer10andorcle客户端

    Oracle客户端和PL/SQL Developer是数据库开发者和管理员常用的工具,尤其在处理Oracle数据库时。本文将详细介绍这两个组件及其重要性。 首先,Oracle客户端是连接到Oracle数据库服务器的软件,允许用户进行查询、...

    第一个RAP例子程序(图示)

    该类需要实现`IEntryPoint`接口,这是RAP启动时会调用的第一个类。在这个类中定义`createUI`方法用于构建UI。 ```java package com.example.rap.helloworld; import org.eclipse.rwt.lifecycle.IEntryPoint; ...

    SplashScreen with progressBar 启动画面 进度条 VB VS 2010

    在VB (Visual Basic)开发环境中,使用VS (Visual Studio) 2010创建一个带有进度条的SplashScreen(启动画面)是一项常见的需求,尤其是在应用程序启动时需要进行一些初始化操作时,用户界面的反馈能够提升用户体验。...

Global site tag (gtag.js) - Google Analytics