SWT浏览器和Eclipse
在我的Arch Linux,带有Google Window Builder / SWT应用程序的Eclipse上,
Exception in thread "main" org.eclipse.swt.SWTError: No more handles [Unknown Mozilla path (MOZILLA_FIVE_HOME not set)] at org.eclipse.swt.SWT.error(SWT.java:4308)
at org.eclipse.swt.browser.Mozilla.initMozilla(Mozilla.java:1826)
at org.eclipse.swt.browser.Mozilla.create(Mozilla.java:687)
at org.eclipse.swt.browser.Browser.<init>(Browser.java:99)
at octopus.EventSummaryComposite.<init>(EventSummaryComposite.java:33)
at octopus.EventEditingComposite.<init>(EventEditingComposite.java:45)
at octopus.EventManagementController.<init>(EventManagementController.java:31)
at octopus.MainController.<init>(MainController.java:38)
at octopus.MainController.main(MainController.java:85)
我相信我需要安装XULrunner或其他东西。但是当我xulrunner
在Arch中安装时,我得到了xulrunner and eclipse are
in
conflict。所以我尝试安装pywebkitgtk
。然后,我添加-Dorg.eclipse.swt.browser.DefaultType=webkit
到/usr/bin/eclipse
并且/usr/share/eclipse/eclipse.ini
不确定使用哪个。但是当我跑步时,我仍然遇到相同的错误。似乎仍未使用webkit。我怎样才能解决这个问题?
到目前为止,我尝试安装libwebkit3
。然后添加-Dorg.eclipse.swt.browser.UseWebKitGTK=true
到中/usr/share/eclipse/eclipse.ini
,我得到相同的错误。
然后我也尝试下载并解压缩xulrunner
从Mozilla浏览器,以~/xulrunner
和添加-Dorg.eclipse.swt.browser.XULRunnerPath=/home/jiewmeng/xulrunner/
到配置,还是同样的错误......
刚才在Ubuntu中,我已经安装xulrunner
并运行了…我想知道配置是否被使用了?
- Arch Linux
- GNOME 3
- Eclipse 3.7.2
- SWT 1.3.0 / 3.7.2(http://dl.google.com/eclipse/inst/d2wbpro/latest/3.7)
- XULRunner 1.9.2.19(http://ftp.mozilla.org/pub/mozilla.org/xulrunner/releases/1.9.2.19/)
- Firefox 11(来自pacman)
让我知道您是否需要其他相关信息
如果我将代码更改为
new Browser(this, SWT.WEBKIT)
我懂了
Exception in thread "main" org.eclipse.swt.SWTError: No more handles at org.eclipse.swt.SWT.error(SWT.java:4308)
at org.eclipse.swt.SWT.error(SWT.java:4197)
at org.eclipse.swt.SWT.error(SWT.java:4168)
at org.eclipse.swt.browser.Browser.<init>(Browser.java:103)
at octopus.EventSummaryComposite.<init>(EventSummaryComposite.java:33)
at octopus.EventEditingComposite.<init>(EventEditingComposite.java:45)
at octopus.EventManagementController.<init>(EventManagementController.java:31)
at octopus.MainController.<init>(MainController.java:38)
at octopus.MainController.main(MainController.java:85)
回答:
根据已编辑的问题和所有勘误表,明显的问题似乎是运行的Eclipse版本与系统上安装的Mozilla或WebKit的版本之间存在版本冲突。极其简洁的文档和依赖地狱进一步混淆了这一点。
关键是要检查你运行Eclipse版本,比较它的版本xulrunner
和libwebkit
完全一样的答案,勘误建议安装在系统上,这里和常见问题记录在这里。但是,根据您遇到的困难和有关此问题的稀疏文档,您将需要采取特殊的预防措施,以确保对于严格正确的版本,您的所有依赖关系都得到满足。
鉴于您的诊断xulrunner and eclipse are in
conflict,我做了一些挖掘工作以找到解决此问题的正确方法。事实证明,此线程对此进行了详细介绍。您需要关注的重要信息:
Eclipse 3.5.2-3.6.x与xulrunner 2.0不兼容。如果这是较旧的系统,请使用xulrunner 1.9.2-15-2解决该问题。
您正在使用的Eclipse版本很可能不支持
libwebkit3
。如前所述,您极有可能需要使用早期版本。在所有情况下,使用正确的Gecko绑定构建Firefox版本都可以解决该问题,事实上,当这些绑定不存在时,会重现此错误:
还要注意,包含Gecko版本与上述Mozilla版本相关的Firefox发行版也可以与Eclipse
3.1及更高版本(仅Linux)一起使用,前提是已使用可链接的Gecko库进行了编译。重要的是要注意,从mozilla.org下载的Firefox不满足此条件,但是主要Linux发行版中包含的Firefox安装通常在没有XULRunner安装的情况下也可以。尝试使用没有可链接的Gecko库的Firefox安装将引发错误,并显示消息“没有更多句柄[NS_InitEmbedding
… error -2147221164]”。
简而言之:问题在于Arch Linux打包了Eclipse
SWT的依赖项。但是,这是一个历史悠久的问题,它表明您的Eclipse版本和系统的其余部分迫切需要软件升级… :)
为了获得Google WindowBuilder Pro的在Arch
Linux中工作的SWT浏览器窗口小部件的副本,我创建了一个VM,并使用OP逐步完成了此过程。我能够在32位和64位版本的Arch Linux中重现该错误。
事实证明,Arch Linux的绑定libwebkit
不足,因此我继续xulrunner-1.9.2.19
从源代码构建。经过一整个
很多的必要
的修正,我的make
install版本只是工作与Eclipse。
对于任何愿意的人,下一步就是将其报告给Arch Linux。
以上是 SWT浏览器和Eclipse 的全部内容, 来源链接: utcz.com/qa/413378.html