2

Eclipse RCP プラグイン内で実行される SWT ブラウザーとして Firefox を使用しようとしています。

ここで見つけた次のコードを使用して、XULRunner をロードしようとしました。

    Bundle bundle = Platform.getBundle(PLUGIN_NAME); //$NON-NLS-1$
    if (bundle != null) {
        URL resourceUrl = bundle.getResource("xulrunner"); //$NON-NLS-1$
        if (resourceUrl != null) {
            try {
                URL fileUrl = FileLocator.toFileURL(resourceUrl);
                File file = new File(fileUrl.toURI());
                System.setProperty(
                        "org.eclipse.swt.browser.XULRunnerPath", "file:///" + file.getAbsolutePath()); //$NON-NLS-1$
                System.setProperty("org.eclipse.swt.browser.DefaultType",
                        "mozilla");

            } catch (IOException e) {
                e.printStackTrace();
            } catch (URISyntaxException e) {
                e.printStackTrace();
            }
        }
    }
    Browser webBrowser = new Browser(parent, SWT.MOZILLA);

Windows 7 x86 と Eclipse Indigo を使用しています。XULrunner 3.6.25 と 10 を試しました。使用した Firefox のバージョンは 10 と 22 でした。

バージョンに関係なく、クラッシュして次のスタック トレースが表示されます。

org.eclipse.swt.SWTError: XPCOM error -2147467259
at org.eclipse.swt.browser.Mozilla.error(Mozilla.java:2502)
at org.eclipse.swt.browser.Mozilla.initXULRunner(Mozilla.java:2464)
at org.eclipse.swt.browser.Mozilla.create(Mozilla.java:672)
at org.eclipse.swt.browser.Browser.<init>(Browser.java:99)

file:///XULRunner へのパスの前を削除するとc is not a registered protocol、XULrunner 3.6.25 でエラーが発生します。

この特定の XPCOM エラーの意味と修正方法を知っている人はいますか?

4

1 に答える 1

2

この回答に基づいて、Eclipse内でFirefoxを機能させる手順は次のとおりです。

  1. Ajax ツール フレームワークをインストールします ( http://wiki.eclipse.org/ATF/Installing ) 。
  2. 「実行構成...」->「プラグイン」の下に追加org.mozilla.xulrunnerしてorg.mozilla.xulrunner.win32.win32.x86
  3. 次のコードを使用して、swt.browser 内で Firefox を起動します。

    Bundle bundle = Platform.getBundle("org.mozilla.xulrunner"); //$NON-NLS-1$  
    if (bundle != null) {
        URL resourceUrl = bundle.getResource("xulrunner"); //$NON-NLS-1$
        if (resourceUrl != null) {
            try {
                URL fileUrl = FileLocator.toFileURL(resourceUrl);
                File file = new File(fileUrl.toURI());
                System.setProperty("org.eclipse.swt.browser.DefaultType",
                        "mozilla");
                System.setProperty(
                        "org.eclipse.swt.browser.XULRunnerPath", file.getAbsolutePath()); //$NON-NLS-1$
    
            } catch (IOException e) {
                e.printStackTrace();
            } catch (URISyntaxException e) {
                e.printStackTrace();
            }
        }
    } else {
        System.err.println("Could not find XULrunner bundle");
    }
    Browser webBrowser = new Browser(parent, SWT.MOZILLA);
    GridData grid = new GridData(GridData.FILL_BOTH);
    webBrowser.setLayoutData(grid);
    // Prepending "file://" prevents the "<driveletter> is not a registered protocol" error
    String graphUrl = "file://C:/Users/you/yourGraph.html"
    webBrowser.setUrl(graphUrl);
    
于 2013-08-01T10:03:47.727 に答える