【问题标题】:Eclipse: The SWT browser widget could not be createdEclipse:无法创建 SWT 浏览器小部件
【发布时间】:2019-08-28 14:40:21
【问题描述】:

我已经在我的 Linux 机器 (KDE Neon 5.15) 上安装了 eclipse (4.10),除了 JavaDoc 之外一切都运行良好。每当我查看 JavaDoc-hover 时,我都会得到一个纯文本表示,并在底部显示

NOTE: The SWT Browser widget could not be created. This fallback mode doesn't show links and misses other functionality.

进一步的调查使我使用 SWT 浏览器小部件创建了一个最小的 SWT 示例:

import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class BrowserTest {
    public static void main(String[] args) {
        Display display = new Display();
        Shell shell = new Shell(display);

        shell.setLayout(new FillLayout());

        Browser b = new Browser(shell, SWT.NONE);
        b.setUrl("www.google.com");

        shell.open();

        while (!shell.isDisposed()) {
            display.readAndDispatch();
            display.sleep();
        }

        display.dispose();
    }
}

尝试执行此代码失败并出现异常

Exception in thread "main" org.eclipse.swt.SWTError: No more handles [Browser style SWT.MOZILLA and Java system property org.eclipse.swt.browser.DefaultType=mozilla are not supported with GTK 3 as XULRunner is not ported for GTK 3 yet]
    at org.eclipse.swt.SWT.error(Unknown Source)
    at org.eclipse.swt.browser.MozillaDelegate.<init>(Unknown Source)
    at org.eclipse.swt.browser.Mozilla.create(Unknown Source)
    at org.eclipse.swt.browser.Browser.<init>(Unknown Source)
    at Main.main(Main.java:31)

这清楚地表明系统确实无法创建浏览器小部件。虽然这一次错误消息的信息量更大。
我还尝试将浏览器小部件的样式设置为SWT.MOZILLA,这产生了相同的错误消息(如预期的那样),使用SWT.WEBKIT 也抛出了同样的错误,尽管没有任何解释性文本(所以只有org.eclipse.swt.SWTError: No more handles)。

【问题讨论】:

  • 好的,谁把这个问题选为 OT(或正在考虑这个问题):这个问题或多或少是 linux 特有的(当然是在考虑其解决方案时)。那么,如果不是在这里,您还想在哪里发布这样的问题?它发生在 Linux 中,并且正在 Linux 中修复(而不是在 eclipse 本身中)。因此,对我来说,这正是这个网站的全部意义所在。
  • @muru 我不会称其为“一般调试”,因为它有助于找到原始问题的根源。这里要回答的问题是为什么 eclipse 在 Linux 上运行时不会正确显示 JavaDoc。所以我不会说这算作调试。

标签: java html linux eclipse


【解决方案1】:

从错误消息和一些进一步的研究中可以清楚地看出,SWT 浏览器小部件依赖于XULRunner 软件来呈现 HTML。如错误消息所述,这尚未移植到 GTK3(尚未),因此无法使用。不过,默认情况下,eclipse 确实以 GTK3 模式启动,所以这是根本问题。

解决该问题的尝试可能是强制 Eclipse 进入 GTK2 模式(请参阅 here),但对 Eclipse FAQ 的进一步调查显示,从 Eclipse 4.8 及更高版本的 XULRunner 根本不再支持。

因此,使用SWT.MOZILLA 样式创建浏览器的选项在这些版本中似乎无效。相反,人们必须专注于让SWT.WEBKIT 风格发挥作用。对于FAQ 的另一次访问表明

WebKitGTK 1.2.0 或更新版本必须在库加载路径中。

因此,我继续搜索并安装了相应的库(在我的情况下为libwebkitgtk-3.0-0)。
在 SWT-snipped 上面安装了那个包之后,启动就好了,在重新启动 eclipse 之后,JavaDoc 又恢复了完整的功能。

如果这不能直接为您工作,您可能需要相应地设置 org.eclipse.swt.browser.DefaultType 变量。根据this question,这可以通过确保-Dorg.eclipse.swt.browser.DefaultType=webkiteclipse.ini 文件中来完成。

【讨论】:

    【解决方案2】:

    对于 arch linux,我必须从 AUR 安装 webkit2gtk 才能使其正常工作。

    【讨论】:

    • 顺便说一句,它在官方回购 (pacman -S webkit2gtk) 上,而不是在 AUR 上(不再)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    • 1970-01-01
    • 2011-10-21
    • 2011-07-05
    • 2013-04-07
    • 1970-01-01
    • 2015-10-26
    相关资源
    最近更新 更多