`

Ubuntu下运行Swt带browser程序出现Unknown Mozilla path (MOZILLA_FIVE_HOME not set)异常

 
阅读更多

昨天把T400换成8G内存,顺势重装了ubuntu 64bit,今天run我的一个swt项目的时候,报错No more handles [Unknown Mozilla path (MOZILLA_FIVE_HOME not set)]

 

我第一反应是找到mozilla的位置,加入系统变量中,发现问题依旧。

 

网上找了下,官方faq说明:http://www.eclipse.org/swt/faq.php#browserlinuxrcp,具体解决办法没说清楚。

 

然后找到了这个兄弟的博客,执行 sudoapt-get install libwebkitgtk-1.0-0 ,问题解决。

 

顺势贴一下WindowsBuilder的插件地址:https://developers.google.com/java-dev-tools/download-wbpro?hl=zh-CN

 

引用:http://blog.csdn.net/gongli109/article/details/8174755
系统信息:ubuntu 12.04 TSL 32位x86系统

今天第一次用ubuntu的系统启动eclipse内置的游览器报了这样的错误:

eclipse3.5(jee)和eclipse3.7(sdk)版的内置游览器都在Ubuntu12.04 LTS报了这样的错误:

Nomore handles [Unknown Mozilla path (MOZILLA_FIVE_HOME not set)]

org.eclipse.swt.SWTError:No more handles [Unknown Mozilla path (MOZILLA_FIVE_HOME not set)]

atorg.eclipse.swt.SWT.error(SWT.java:4109)

atorg.eclipse.swt.browser.Mozilla.initMozilla(Mozilla.java:1672)

atorg.eclipse.swt.browser.Mozilla.create(Mozilla.java:637)

atorg.eclipse.swt.browser.Browser.<init>(Browser.java:119)

atorg.eclipse.ui.internal.browser.BrowserViewer.<init>(BrowserViewer.java:225)

atorg.eclipse.ui.internal.browser.WebBrowserView.createPartControl(WebBrowserView.java:48)

atorg.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:375)

atorg.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:229)

atorg.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595)

atorg.eclipse.ui.internal.WorkbenchPage$ActivationList.setActive(WorkbenchPage.java:4218)

atorg.eclipse.ui.internal.WorkbenchPage$18.runWithException(WorkbenchPage.java:3277)

atorg.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)

atorg.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)

atorg.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)

atorg.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3527)

atorg.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3174)

atorg.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803)

atorg.eclipse.ui.internal.Workbench$31.runWithException(Workbench.java:1566)

atorg.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)

atorg.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)

atorg.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)

atorg.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3527)

atorg.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3174)

解决方法:sudo apt-get install libwebkitgtk-1.0-0

重新启动一下eclipse,eclipse3.7中游览器可用了,但是eclipse3.5的游览器仍然不可用,可能是3.7版本较3.5版本做了改进,减少了对系统的依赖。eclipse3.5仍然报上面的错误,它不是说MOZILLA_FIVE_HOME这个环境变量没有设置么,给他设一个编辑一下/etc/profile

export MOZILLA_FIVE_HOME=/usr/lib/mozilla/ 重新启动eclipse仍然报下面的错误:


Nomore handles [MOZILLA_FIVE_HOME='/usr/lib/mozilla/'](java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons:

/home/eclipse/configuration/org.eclipse.osgi/bundles/563/1/.cp/libswt-mozilla-gtk-3650.so:libxpcom.so:无法打开共享对象文件:没有那个文件或目录

noswt-mozilla-gtk in java.library.path

/tmp/swtlib-32/libswt-mozilla-gtk-3650.so:libxpcom.so:无法打开共享对象文件:没有那个文件或目录

Can'tload library: /tmp/swtlib-32/libswt-mozilla-gtk.so

)

org.eclipse.swt.SWTError:No more handles [MOZILLA_FIVE_HOME='/usr/lib/mozilla/'](java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons:

/home/eclipse/configuration/org.eclipse.osgi/bundles/563/1/.cp/libswt-mozilla-gtk-3650.so:libxpcom.so:无法打开共享对象文件:没有那个文件或目录

noswt-mozilla-gtk in java.library.path

/tmp/swtlib-32/libswt-mozilla-gtk-3650.so:libxpcom.so:无法打开共享对象文件:没有那个文件或目录

Can'tload library: /tmp/swtlib-32/libswt-mozilla-gtk.so

)

atorg.eclipse.swt.SWT.error(SWT.java:4109)

atorg.eclipse.swt.browser.Mozilla.initMozilla(Mozilla.java:1703)

atorg.eclipse.swt.browser.Mozilla.create(Mozilla.java:637)

atorg.eclipse.swt.browser.Browser.<init>(Browser.java:119)

atorg.eclipse.ui.internal.browser.BrowserViewer.<init>(BrowserViewer.java:225)

atorg.eclipse.ui.internal.browser.WebBrowserView.createPartControl(WebBrowserView.java:48)

atorg.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:375)

atorg.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:229)

atorg.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595)

atorg.eclipse.ui.internal.Perspective.showView(Perspective.java:2245)

atorg.eclipse.ui.internal.WorkbenchPage.busyShowView(WorkbenchPage.java:1071)

atorg.eclipse.ui.internal.WorkbenchPage$20.run(WorkbenchPage.java:3822)

atorg.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)

atorg.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:3819)

atorg.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:3795)

atorg.eclipse.ui.handlers.ShowViewHandler.openView(ShowViewHandler.java:162)

atorg.eclipse.ui.handlers.ShowViewHandler.openOther(ShowViewHandler.java:106)

atorg.eclipse.ui.handlers.ShowViewHandler.execute(ShowViewHandler.java:74)

atorg.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293)

atorg.eclipse.core.commands.Command.executeWithChecks(Command.java:476)

atorg.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)

atorg.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169)

atorg.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241)

atorg.eclipse.ui.internal.ShowViewMenu$3.run(ShowViewMenu.java:144)

atorg.eclipse.jface.action.Action.runWithEvent(Action.java:498)

atorg.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)

atorg.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)

atorg.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)

atorg.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)

atorg.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258)

atorg.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3552)

atorg.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3171)

atorg.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2629)

atorg.eclipse.ui.internal.Workbench.runUI(Workbench.java:2593)

atorg.eclipse.ui.internal.Workbench.access$4(Workbench.java:2427)

atorg.eclipse.ui.internal.Workbench$7.run(Workbench.java:670)

atorg.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)

atorg.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:663)

atorg.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)

atorg.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)

atorg.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)

atorg.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)

atorg.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)

atorg.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)

atorg.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)

atsun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

atjava.lang.reflect.Method.invoke(Method.java:597)

atorg.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)

atorg.eclipse.equinox.launcher.Main.basicRun(Main.java:574)

atorg.eclipse.equinox.launcher.Main.run(Main.java:1407)

Causedby: java.lang.UnsatisfiedLinkError: Could not load SWT library.Reasons:

/home/eclipse/configuration/org.eclipse.osgi/bundles/563/1/.cp/libswt-mozilla-gtk-3650.so:libxpcom.so:无法打开共享对象文件:没有那个文件或目录

noswt-mozilla-gtk in java.library.path

/tmp/swtlib-32/libswt-mozilla-gtk-3650.so:libxpcom.so:无法打开共享对象文件:没有那个文件或目录

Can'tload library: /tmp/swtlib-32/libswt-mozilla-gtk.so


atorg.eclipse.swt.internal.Library.loadLibrary(Library.java:267)

atorg.eclipse.swt.internal.Library.loadLibrary(Library.java:174)

atorg.eclipse.swt.browser.Mozilla.initMozilla(Mozilla.java:1688)

...50 more

分析:从eclipse的官网大概知道:内置游览器要想在linux上跑有这两方面的依赖:Webkit和Xulrunner 检查一下系统的/usr/lib下面确实没有xulrunneryyu于是在https://developer.mozilla.org/en-US/docs/Gecko_SDK下载xulrunner-sdk

得到一个这样的文件:xulrunner-3.6.28.en-US.linux-i686.sdk.tar.bz2解压一下

cd xulrunner-sdk/bin

./xulrunner–register-global //注册一下xulrunner

重新启动一下eclipse,这时它的内置游览器就应该可用了。这时重新删除MOZILLA_FIVE_HOME环境变量,内置游览器仍然可用,说明MOZILLA_FIVE_HOME这个环境变量不是靠手动来设置的,而是系统内部已经设定好的。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics