2013-07-15 7 views
1

Я пытаюсь использовать Firefox как свой SWT-браузер, который запускается внутри моего плагина Eclipse RCP.Firefox в Eclipse RCP

Я попытался загрузки XULRunner используя следующий код, который я нашел here:

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.

Независимо от того, какая версия, она не выходит из строя давая это StackTrace:

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 и как ее исправить?

+0

Первый результат google для «SWTError: XPCOM error»: [Ошибка 174395 - браузер SWTError (ошибка XPCOM -2147467259) при использовании виджета SWT 3.3 Broswer на Linux с Mozilla 1.7.8] (https: //bugs.eclipse .org/bugs/show_bug.cgi? id = 174395) – Baz

+0

@Baz: Спасибо. Как я вижу, описанная ошибка представляет собой 64-разрядную проблему. Но моя среда чисто 32 бит. –

ответ

1

Опираясь на this answer, эти шаги, которые сделали Firefox работу для меня внутри Eclipse:

  1. Установите Ajax Tools Framework (http://wiki.eclipse.org/ATF/Installing)
  2. Под "Run Configurations ..." -> «Plug -ins»добавить org.mozilla.xulrunner и org.mozilla.xulrunner.win32.win32.x86
  3. Start Firefox в swt.browser, используя следующий код:

    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);