线程“main”中的exceptionorg.eclipse.swt.SWTError:swt.mozilla中的XPCOM错误0x80004005
按照我的SWT代码使用Mozilla浏览器,但它给了我一个错误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的注释看,使用版本10.x看起来是正确的。
我可以通过下载XULRunner 10.0.4esr来运行代码。 我按照本答案中给出的安装步骤,以及具体指向bin
目录。
- 从此目录下载
xulrunner-10.0.4esr.en-US.win32.sdk.zip
- 解压缩内容并将
xulrunner
目录移动到某个位置(我使用c:/xulrunner
,但在你的情况下C:/Program Files (x86)/XULRunner
应该没问题。 - 使用VM参数(
-Dorg.eclipse.swt.browser.XULRunnerPath
),或使用当前的System.setProperty()
。 确保指定的路径指向bin
目录,而不仅仅是顶级xulrunner
目录。
确保您拥有该版本的XULRunner(特别是SDK),并validation您指向的文件路径是否存在。 根据您解压缩下载的位置,您可能需要替换:
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位库,这应该可行。 根据这个答案,您应该可以将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
目录的内容(相当于下载运行pathToXulrunner
不是SDK),因此您可以从pathToXulrunner
的文件路径中排除bin
。
我不能在这一分钟,但我会在其他地方主持这个并稍后更新post。
编辑3:我已经将其重新托管为xulrunner-1.9.2.25.en-US.win64.zip