一尘不染

SWT浏览器和Eclipse

linux

在我的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。我怎样才能解决这个问题?

更新2

到目前为止,我尝试安装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问题

更新(环境和版本)

让我知道您是否需要其他相关信息

更新(旧)

如果我将代码更改为

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)

阅读 470

收藏
2020-06-07

共1个答案

一尘不染

根据已编辑的问题和所有勘误表,明显的问题似乎是运行的Eclipse版本与系统上安装的Mozilla或WebKit的版本之间存在版本冲突。极其简洁的文档依赖地狱进一步混淆了这一点。

关键是要检查你运行Eclipse版本,比较它的版本xulrunnerlibwebkit完全一样的答案,勘误建议安装在系统上,这里和常见问题记录在这里。但是,根据您遇到的困难和有关此问题的稀疏文档,您将需要采取特殊的预防措施,以确保对于严格正确的版本,您的所有依赖关系都得到满足。

鉴于您的诊断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。

2020-06-07