遵循使用Mozilla浏览器的SWT代码,但它给我一个错误xpcomm错误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();
    }
}


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

最佳答案

从有关使用XULRunner here的注释中,看起来使用版本10.x是正确的。

通过下载XULRunner 10.0.4esr,我可以使您的代码运行。我按照给出的in this answer的安装步骤进行操作,并专门指向bin目录。


下载xulrunner-10.0.4esr.en-US.win32.sdk.zip from this directory
提取内容并将xulrunner目录移动到某个位置(我使用了c:/xulrunner,但在您的情况下,C:/Program Files (x86)/XULRunner也应该很好。
请使用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),因此您可以从bin的文件路径中排除pathToXulrunner

我不能在这一分钟纠正,但我将在其他地方托管它,并在以后更新帖子。



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

关于java - 线程“主” org.eclipse.swt.SWT中的异常错误:swt.mozilla中的XPCOM错误0x80004005,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44803502/

10-10 00:51