想使用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 integrity check error
在本教程中,我们将探讨如何在C#中利用多线程技术来弹出一个模态窗口,展示进度条以提供用户友好的体验。 首先,理解"多线程"的概念是至关重要的。线程是程序的执行流,每个线程都有自己的执行上下文。在单线程应用...
在Eclipse中使用SWT设计界面,涉及到对SWT(Standard Widget Toolkit)的理解与掌握,以及如何在Eclipse环境中配置和使用SWT进行GUI开发。本文将深入解析SWT的起源、优势、基本组成,以及如何在Eclipse中进行环境...
【使用Eclipse进行SWT编程】 SWT,全称Standard Widget Toolkit,是由IBM开发的一套跨平台的图形用户界面(GUI)开发框架。这个框架的诞生源于Java早期GUI框架的局限性。当时,Sun Microsystems已经推出了AWT...
在Eclipse中开发SWT应用,首先需要了解SWT提供的基本组件,如按钮(Button)、文本框(Text)、列表(List)、表格(Table)等,这些组件可以构建出丰富的用户交互界面。SWT的优势在于其与操作系统底层的紧密集成,...
**标准小部件工具包(Java SWT)类库详解与安装指南** Standard Widget Toolkit(SWT)是Java编程环境中用于创建图形...正确安装和配置SWT类库,结合Eclipse这样的IDE,可以更高效地开发出功能丰富的桌面应用程序。
SWT(Standard Widget Toolkit)是Java编程中用于创建桌面应用程序用户界面的一种库,它是Eclipse IDE的基础组件之一。与Java的另一图形用户界面库AWT和Swing相比,SWT以其原生性能、高效和接近操作系统原生外观而受...
本文将专注于 Eclipse 的两个主要组成部分:SWT(Simple Widget Toolkit)和 JFace。SWT 是一个图形库,而 JFace 则是一个与之相匹配的实用框架。通过这两个组件,即使是在 Eclipse 工作台之外,开发者也可以利用...
需要注意的是,一个线程中不能同时有两个活动的 Display 实例存在,否则程序运行时会抛出一个 SWT 异常。如果需要创建多个同时活动的 Display 实例必须在不同的线程中创建它们,并使用 Display 的 getCurrent 函数...
### Eclipse中用SWT和JFace开发入门 #### 关键知识点概述 1. **SWT (Standard Widget Toolkit)** - SWT 是一个图形用户界面工具包,专为 Eclipse 平台设计,允许开发者构建高性能、视觉上类似原生操作系统的 GUI ...
### Eclipse中用SWT和JFace开发入门 #### 一、引言 Eclipse平台以其强大的功能和灵活性闻名,尤其适合开发复杂的图形用户界面(GUI)应用程序。本文将深入探讨如何利用Standard Widget Toolkit (SWT) 和 JFace 库在...
1. **启动Eclipse**:首先确保已经安装并运行了Eclipse IDE。 2. **打开“帮助”菜单**:点击Eclipse主界面上方的“帮助”选项。 3. **选择“安装新软件”**:在弹出的下拉菜单中找到并点击“安装新软件”项。 4. **...
在Java编程中,Draw2D库是一个强大的工具,它允许开发者使用SWT(Standard Widget Toolkit)来创建复杂的图形用户界面,特别适用于绘制图形和图表。Draw2D是Eclipse项目的一部分,它提供了一套丰富的API,可以方便地...
SWT(Standard Widget Toolkit)是Java编程环境中用于创建图形用户界面(GUI)的一个开源库,它是Eclipse项目的一部分。SWT提供了与操作系统更紧密的集成,使得Java应用程序能够具有更丰富的用户界面和更高的性能。...
在Java中实现内嵌浏览器,我们可以利用Eclipse SWT(Standard Widget Toolkit)库中的`Browser`类。以下是一个关于如何使用SWT创建内嵌浏览器的详细说明: 1. **引入依赖**: 首先,你需要在项目中引入SWT库。对于...
SWT(Standard Widget Toolkit)是Java平台上的一款图形用户界面(GUI)工具包,它是Eclipse项目的一部分,旨在提供一个与原生操作系统界面更紧密集成的替代方案,相比于Java的默认GUI库AWT和Swing,SWT在性能和用户...
Oracle客户端和PL/SQL Developer是数据库开发者和管理员常用的工具,尤其在处理Oracle数据库时。本文将详细介绍这两个组件及其重要性。 首先,Oracle客户端是连接到Oracle数据库服务器的软件,允许用户进行查询、...
该类需要实现`IEntryPoint`接口,这是RAP启动时会调用的第一个类。在这个类中定义`createUI`方法用于构建UI。 ```java package com.example.rap.helloworld; import org.eclipse.rwt.lifecycle.IEntryPoint; ...
在VB (Visual Basic)开发环境中,使用VS (Visual Studio) 2010创建一个带有进度条的SplashScreen(启动画面)是一项常见的需求,尤其是在应用程序启动时需要进行一些初始化操作时,用户界面的反馈能够提升用户体验。...