当前位置: 首页 > 面试题库 >

SWT浏览器和Eclipse

韩彬
2023-03-14
问题内容

在我的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问题

更新(环境和版本)

  • 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)

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

更新(旧)

如果我将html" target="_blank">代码更改为

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版本,比较它的版本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。



 类似资料:
  • 我正在使用swt。浏览器包,允许用户在我的应用程序中使用Facebook登录。但是,当用户登录时,会话/cookie存储在磁盘上。我的目标是删除所有会话/cookie。通过浏览器清除会话。clearSessions()没有帮助,因为Facebook身份验证密钥(或类似密钥)很可能存储为cookie。 在网上和(瘦)文档中搜索了几个小时,我找不到一种方法来清除实例的cookies。 <代码>浏览器。

  • 问题内容: 我在使用SWT浏览器组件时遇到了一些麻烦。我正在运行带有Sun的Java SE 1.6的Ubuntu 11.04 AMD64和Eclipse 3.7 我的问题是我的浏览器无法初始化。当我使用SWT.NONE标志实现时,出现错误 然后当我尝试使用SWT.MOZILLA标志时,我得到 我怀疑这部分是因为我正在使用XULRunner2,但是我更喜欢使用WebKit,在Eclipse 3.7中

  • 问题内容: 我写了一个简单的程序。只是CTabItem固有的CTabFolder和WelcomTab。我想通过呈现我的html的浏览器填充我的WelcomeTab。在WelcomeTab的init()方法上,我创建了一个浏览器,但是当程序要构造它时,出现此错误 … 另外,我在基于Arch-Linux的KDE上使用Eclipse 3.7,因为我在各处搜索到此错误时都发现线程受限,所以这是一个简单的程

  • 问题内容: 我正在尝试在Windows 8 64Bit和SWT 4.3 64Bit下创建SWT.MOZILLA类型的SWT浏览器小部件。 根据此,SWT 4.3应支持XULRunner的10.x的或24.x 64位版本 因此,我从此处下载了10.x和24.x 64版本,并分别在和下解压缩。 如果我启动指向xulrunner10的Java应用程序(使用VM参数),则它可以工作,但是,如果我尝试使用x

  • 我在我的应用程序中使用SWT浏览器。我需要在浏览器中的超文本标记语言页面上运行脚本。但是脚本是在页面完全加载之前运行的。所以我如何让应用程序等待,直到浏览器完成加载。我曾经尝试过这样的事情。 但是这样不行! 这类似于JavaSWT浏览器:等待动态页面完全加载,但没有解决方案。

  • Bootstrap支持多种多样的现代浏览器以及设备,还支持一些较早的浏览器。具体支持哪一些,请看下面内容。下面还列出了一些已知的漏洞的详细信息。 支持的浏览器 Bootstrap 支持所有的主流浏览器和平台的最新的、稳定的版本。 在 Windows 中, **我们支持 Internet Explorer 9-11 **。下面提供了更多详细的支持信息。 移动设备 总的来说,Bootstrap支持所有