【问题标题】:Exception in thread "main" org.eclipse.swt.SWTError: XPCOM error 0x80004005 in swt.mozilla线程“主”org.eclipse.swt.SWTError 中的异常:swt.mozilla 中的 XPCOM 错误 0x80004005
【发布时间】:2017-12-01 21:04:28
【问题描述】:

按照我使用 Mozilla 浏览器的 SWT 代码,但它给了我一个错误 xpcomm error 0x80004005。

import java.awt.GridLayout;
import java.io.File;

import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.internal.dnd.SwtUtil;

public class Newbrowser {
    public static void main(String a[]) {
        Display display = new Display();
        Shell shell = new Shell(display);
        /* Composite controls = new Composite(shell, SWT.NONE); */
        shell.setText("Browser");
        String pathToXulrunner = "C://Program Files (x86)/Mozilla XULRunner/";

        System.setProperty("org.eclipse.swt.browser.XULRunnerPath", pathToXulrunner);

        /*
         * System.setProperty("org.eclipse.swt.browser.XULRunnerPath",
         * pathToXulrunner);
         */
        System.setProperty("org.eclipse.swt.browser.MOZ_PROFILE_PATH", new File("").getAbsolutePath());
        Browser browser = new Browser(shell, SWT.MOZILLA);
        shell.setLayout(new FillLayout());
        shell.open();

        FormData data = new FormData();

        data.top = new FormAttachment(0, 0);
        data.bottom = new FormAttachment(100, 0);
        data.left = new FormAttachment(0, 0);
        data.right = new FormAttachment(100, 0);
        browser.setLayoutData(data);
        browser.setUrl("www.google.com");

        // Set up the event loop.

        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                // If no more entries in the event queue
                display.sleep();
            }
        }
        display.dispose();
    }
}

请帮我解决这个问题。提前致谢。

【问题讨论】:

  • 您使用的是什么版本的 SWT 和什么版本的 XULRunner?你看过这个帖子吗:Creating a SWT.MOZILLA browser on Windows 64 bit and SWT 4.3?如果没有更多细节,我无法判断这是否是重复的。
  • 您好,感谢您的评论,我在 Windows 64 位中使用 SWT 4.5.2 和 Xulrunner 10.X
  • @avojak 请帮帮我

标签: java eclipse browser swt mozilla


【解决方案1】:

从使用 XULRunner here 的注释来看,使用 10.x 版本似乎是正确的。

我能够通过下载XULRunner 10.0.4esr 运行您的代码。我按照in this answer 给出的安装步骤,以及专门指向bin 目录。

  1. 下载xulrunner-10.0.4esr.en-US.win32.sdk.zipfrom this directory
  2. 提取内容并将xulrunner 目录移动到某个位置(我使用c:/xulrunner,但在您的情况下C:/Program Files (x86)/XULRunner 也应该没问题。
  3. 要么使用 VM 参数 (-Dorg.eclipse.swt.browser.XULRunnerPath),要么像现在一样使用 System.setProperty()。确保您指定的路径指向bin 目录,而不仅仅是顶级xulrunner 目录。

确保您拥有该版本的 XULRunner(特别是 SDK),并验证您指向的文件路径是否存在。根据您解压缩下载的位置,您可能需要替换:

String pathToXulrunner = "C://Program Files (x86)/Mozilla XULRunner/";

与:

String pathToXulrunner = "C:/Program Files (x86)/Mozilla XULRunner/bin";

我也在运行带有 SWT 4.5.2 的 64 位 Windows 10,所以我们应该有相同的设置。


编辑:我刚刚意识到我正在使用 32 位库(32 位 Java 和 32 位 SWT)来执行此操作。因此,如果您有任何机会使用 32 位库,这应该可以。根据this answer,您应该能够将 XULRunner 24 与 64 位 JRE 一起使用,但是我无法使其正常工作。


编辑 2:对于 64 位库,我在这里找到了 xulrunner-1.9.2.25 的 bin 目录的内容:https://osdn.net/projects/sfnet_runawfe/downloads/SRC%20and%20BIN%20files/extras/xulrunner-1.9.2.25-win64.zip/

下载后,我就可以运行您的代码了。请注意,这是bin 目录的内容(相当于下载运行时而不是SDK),因此您可以从pathToXulrunner 的文件路径中排除bin

我现在不能纠正,但我会在其他地方托管,稍后更新帖子。


编辑 3:我已将其重新托管为 xulrunner-1.9.2.25.en-US.win64.zip

【讨论】:

  • 是的,它正在使用 32 位库(32 位 Java 和 32 位 SWT),但是 64 位库呢?我仍然无法在 64 位库上得到这个。
  • @Bhavikpatel 查看我的第二次编辑 - 我找到了 xulrunner 的 win64 版本的 bin 目录的内容,并且能够运行您的代码。
  • @Bhavikpatel 这有帮助吗?
猜你喜欢
  • 2015-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多