Exception in thread "main" org.eclipse.swt.SWTError: XPCOM error 0x80004005 in swt.mozilla
Exception in thread "main" org.eclipse.swt.SWTError: XPCOM error 0x80004005 in swt.mozilla
following my SWT code which use Mozilla browser but it gives me an error 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();
}
}
请帮我解决这个问题。提前致谢。
从 XULRunner 的使用说明 here 看来,使用版本 10.x 是正确的。
我可以通过下载 XULRunner 10.0.4esr. I followed the installation steps given in this answer 以及具体指向 bin
目录来获取您的代码 运行ning。
- 下载
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";
我也在 运行宁 64 位 Windows 10 与 SWT 4.5.2,所以我们应该有相同的设置。
编辑:我刚刚意识到我正在使用 32 位库(32 位 Java 和 32 位 SWT)执行此操作。因此,如果您有机会使用 32 位库,这应该可行。根据 this answer,您应该可以将 XULRunner 24 与 64 位 JRE 一起使用,但是我无法让它工作。
编辑 2:对于 64 位库,我在此处找到 xul运行ner-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
].
我现在不能纠正,但我会在其他地方托管它并稍后更新 post。
编辑 3:我已将其重新托管为 xulrunner-1.9.2.25.en-US.win64.zip
following my SWT code which use Mozilla browser but it gives me an error 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();
}
}
请帮我解决这个问题。提前致谢。
从 XULRunner 的使用说明 here 看来,使用版本 10.x 是正确的。
我可以通过下载 XULRunner 10.0.4esr. I followed the installation steps given in this answer 以及具体指向 bin
目录来获取您的代码 运行ning。
- 下载
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";
我也在 运行宁 64 位 Windows 10 与 SWT 4.5.2,所以我们应该有相同的设置。
编辑:我刚刚意识到我正在使用 32 位库(32 位 Java 和 32 位 SWT)执行此操作。因此,如果您有机会使用 32 位库,这应该可行。根据 this answer,您应该可以将 XULRunner 24 与 64 位 JRE 一起使用,但是我无法让它工作。
编辑 2:对于 64 位库,我在此处找到 xul运行ner-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
].
我现在不能纠正,但我会在其他地方托管它并稍后更新 post。
编辑 3:我已将其重新托管为 xulrunner-1.9.2.25.en-US.win64.zip