在我的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。我怎样才能解决这个问题?
xulrunner
xulrunner and eclipse are in conflict
pywebkitgtk
-Dorg.eclipse.swt.browser.DefaultType=webkit
/usr/bin/eclipse
/usr/share/eclipse/eclipse.ini
更新2
到目前为止,我尝试安装libwebkit3。然后添加-Dorg.eclipse.swt.browser.UseWebKitGTK=true到中/usr/share/eclipse/eclipse.ini,我得到相同的错误。
libwebkit3
-Dorg.eclipse.swt.browser.UseWebKitGTK=true
然后我也尝试下载并解压缩xulrunner从Mozilla浏览器,以~/xulrunner和添加-Dorg.eclipse.swt.browser.XULRunnerPath=/home/jiewmeng/xulrunner/到配置,还是同样的错误......
~/xulrunner
-Dorg.eclipse.swt.browser.XULRunnerPath=/home/jiewmeng/xulrunner/
刚才在Ubuntu中,我已经安装xulrunner并运行了…我想知道配置是否被使用了?
Arch Linux问题
更新(环境和版本)
让我知道您是否需要其他相关信息
更新(旧)
如果我将代码更改为
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完全一样的答案,勘误建议安装在系统上,这里和常见问题记录在这里。但是,根据您遇到的困难和有关此问题的稀疏文档,您将需要采取特殊的预防措施,以确保对于严格正确的版本,您的所有依赖关系都得到满足。
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。
xulrunner-1.9.2.19
make install
对于任何愿意的人,下一步就是将其报告给Arch Linux。