eclipse:No more handles [Unknown Mozilla path (MOZILLA_FIVE_HOME not set)]

本文介绍了解决Eclipse启动时因Markdown插件导致的崩溃问题,分析了错误原因,提供了两种解决方案:安装缺失的libwebkitgtk-1.0-0库或删除相关配置文件。
$uname -a
Linux ***-workspace 4.10.0-32-generic #36~16.04.1-Ubuntu SMP Wed Aug 9 09:19:02 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

eclipse错误描述:在启动eclipse的时候,选定工作目录后,eclipse闪退,并叫我看工作目录下的.metadata/.log日志查看问题

复制代码

!ENTRY org.eclipse.osgi 4 0 2017-09-01 08:20:00.988
!MESSAGE Application error
!STACK 1
org.eclipse.swt.SWTError: No more handles [Unknown Mozilla path (MOZILLA_FIVE_HOME not set)]
at org.eclipse.swt.SWT.error(SWT.java:4387)
at org.eclipse.swt.browser.Mozilla.initMozilla(Mozilla.java:1936)
at org.eclipse.swt.browser.Mozilla.create(Mozilla.java:699)
at org.eclipse.swt.browser.Browser.<init>(Browser.java:99)
at winterwell.markdown.views.MarkdownPreview.createPartControl(MarkdownPreview.java:41)
at org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:386)
at org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:240)
at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595)
at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:315)
at org.eclipse.ui.internal.ViewPane.setVisible(ViewPane.java:534)
at org.eclipse.ui.internal.presentations.PresentablePart.setVisible(PresentablePart.java:180)
at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.select(PresentablePartFolder.java:270)
at org.eclipse.ui.internal.presentations.util.LeftToRightTabOrder.select(LeftToRightTabOrder.java:65)
at org.eclipse.ui.internal.presentations.util.TabbedStackPresentation.selectPart(TabbedStackPresentation.java:473)
at org.eclipse.ui.internal.PartStack.refreshPresentationSelection(PartStack.java:1245)
at org.eclipse.ui.internal.PartStack.createControl(PartStack.java:662)
at org.eclipse.ui.internal.PartStack.createControl(PartStack.java:570)
at org.eclipse.ui.internal.PartSashContainer.createControl(PartSashContainer.java:568)
at org.eclipse.ui.internal.PerspectiveHelper.activate(PerspectiveHelper.java:272)
at org.eclipse.ui.internal.Perspective.onActivate(Perspective.java:981)
at org.eclipse.ui.internal.WorkbenchPage.onActivate(WorkbenchPage.java:2718)
at org.eclipse.ui.internal.WorkbenchWindow$28.run(WorkbenchWindow.java:3030)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.ui.internal.WorkbenchWindow.setActivePage(WorkbenchWindow.java:3011)
at org.eclipse.ui.internal.WorkbenchWindow$21.runWithException(WorkbenchWindow.java:2297)
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:135)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3537)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3189)
at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803)
at org.eclipse.ui.internal.Workbench$33.runWithException(Workbench.java:1600)
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:135)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3537)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3189)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2609)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
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:353)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
at org.eclipse.equinox.launcher.Main.main(Main.java:1414)

!ENTRY org.eclipse.core.jobs 2 2 2017-09-01 08:20:01.474
!MESSAGE Job found still running after platform shutdown. Jobs should be canceled by the plugin that scheduled them during shutdown: org.eclipse.ui.internal.ide.IDEWorkbenchActivityHelper$4

复制代码

错误分析:

通过查找方案,分析是有以下问题引起的。由于我Ubuntu系统被误操作破坏了后,重新安装了,讲原来的home目录直接挂在到新的系统下面使用,也就是说eclipse是新装的,而工作目录是以前的,而工作目录中记录了以前装的markdown插件时安装的libwebkitgtk-1.0-0相关信息,在新的eclipse下没有,所以启动崩溃。

解决方案:

1. 用以下命令安装需要的插件即可。

$ sudo apt-get install libwebkitgtk-1.0-0

2.或者删掉工作目录下的以前的记录目录。

$rm -rf workspace/.metadata
解决 Kettle 中出现 `swt.SWTError: No more handles` 错误可尝试以下方法: #### 检查系统资源 关闭不必要的程序,过多程序运行会占用大量系统资源,包括句柄。增加系统内存,若系统内存不足,可能导致句柄分配失败,可考虑增加物理内存(RAM)或清理虚拟内存。 #### 检查代码逻辑(若涉及自定义 Kettle 脚本) 确保资源正确释放,在使用完 SWT 组件后,调用其 `dispose()` 方法。例如: ```java import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class SWTResourceExample { public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display); // 在这里添加界面组件 shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } // 确保资源正确释放 shell.dispose(); display.dispose(); } } ``` 减少不必要的组件创建,避免在循环中频繁创建 SWT 组件,尽量复用已有的组件。 #### 检查环境配置 更新 SWT 库,使用最新版本的 SWT 库,有时旧版本的库可能存在一些已知的问题,更新到最新版本可能会解决这些问题。确保使用的 Java 版本与 SWT 库兼容,不同版本的 SWT 可能对 Java 版本有不同的要求。 #### 特定错误原因分析 - **XULRunner 问题**:如果错误信息中包含 `Could not detect registered XULRunner to use`,需要确保 XULRunner 已正确安装并注册。可以手动设置 `MOZILLA_FIVE_HOME` 环境变量指向 XULRunner 的安装目录。 - **Mozilla 路径问题**:若出现 `Unknown Mozilla path (MOZILLA_FIVE_HOME not set)`,同样需要设置 `MOZILLA_FIVE_HOME` 环境变量。 - **GTK 问题**:当出现 `gtk_init_check() failed`,可能是当前操作系统的登录用户没有图形界面权限。需要将图形界面权限放开,例如使用 `xhost +` 命令(此命令会允许任何用户连接到 X 服务器,在生产环境中使用时需谨慎)。 - **WebKit 问题**:对于 `SWT.WebKit 无法加载` 的情况,确保已安装 Safari(在需要使用 SWT.WEBKIT 样式的浏览器时),并且 JVM 和 Safari 的位数一致。同时,检查系统环境是否存在差异,例如操作系统的补丁、依赖库等。 #### 类似 Eclipse 的解决思路(若适用) 若问题与 Eclipse 中出现的类似,可准备一个与当前使用版本相同或相近的免安装版 Kettle。打开 Kettle 的安装目录,删除 `features` 和 `plugins` 目录下的和 `ui` 相关的所有文件夹或者 `jar` 包。若出现界面显示问题,将准备好的免安装版的 Kettle 复制并覆盖安装位置的 Kettle,弹出的对话框有冲突时点击“替换”,出现合并对话框时点击“合并”,等待全部操作完成即可[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值