Buggy code:
class Mozilla extends WebBrowser { int embedHandle ; nsIWebBrowser webBrowser ; Object webBrowserObject ; MozillaDelegate delegate ; XPCOMObject supports ; XPCOMObject weakReference ; XPCOMObject webProgressListener ; XPCOMObject webBrowserChrome ; XPCOMObject webBrowserChromeFocus ; XPCOMObject embeddingSiteWindow ; XPCOMObject interfaceRequestor ; XPCOMObject supportsWeakReference ; XPCOMObject contextMenuListener ; XPCOMObject uriContentListener ; XPCOMObject tooltipListener ; XPCOMObject domEventListener ; int chromeFlags = nsIWebBrowserChrome . CHROME_DEFAULT ; int refCount ; int lastKeyCode ; int lastCharCode ; int request ; Point location ; Point size ; boolean visible ; boolean isChild ; boolean ignoreDispose ; boolean awaitingNavigate ; Shell tip = null ; Listener listener ; Vector unhookedDOMWindows = new Vector ( ) ; static nsIAppShell AppShell ; static AppFileLocProvider LocationProvider ; static WindowCreator2 WindowCreator ; static int BrowserCount ; static boolean Initialized ; static boolean IsPre_1_8 ; static boolean PerformedVersionCheck ; static boolean XPCOMWasGlued ; static boolean XPCOMInitWasGlued ; static final String GRERANGE_LOWER = "1.8.1.2" ; static final String GRERANGE_LOWER_FALLBACK = "1.8" ; static final boolean LowerRangeInclusive = true ; static final String GRERANGE_UPPER = "1.9.*" ; static final boolean UpperRangeInclusive = true ; static final int MAX_PORT = 65535 ; static final String SEPARATOR_OS = System . getProperty ( "file.separator" ) ; static final String ABOUT_BLANK = "about:blank" ; static final String DISPOSE_LISTENER_HOOKED = "org.eclipse.swt.browser.Mozilla.disposeListenerHooked" ; static final String PREFIX_JAVASCRIPT = "javascript:" ; static final String PREFERENCE_CHARSET = "intl.charset.default" ; static final String PREFERENCE_DISABLEOPENDURINGLOAD = "dom.disable_open_during_load" ; static final String PREFERENCE_DISABLEWINDOWSTATUSCHANGE = "dom.disable_window_status_change" ; static final String PREFERENCE_LANGUAGES = "intl.accept_languages" ; static final String PREFERENCE_PROXYHOST_FTP = "network.proxy.ftp" ; static final String PREFERENCE_PROXYPORT_FTP = "network.proxy.ftp_port" ; static final String PREFERENCE_PROXYHOST_HTTP = "network.proxy.http" ; static final String PREFERENCE_PROXYPORT_HTTP = "network.proxy.http_port" ; static final String PREFERENCE_PROXYHOST_SSL = "network.proxy.ssl" ; static final String PREFERENCE_PROXYPORT_SSL = "network.proxy.ssl_port" ; static final String PREFERENCE_PROXYTYPE = "network.proxy.type" ; static final String PROFILE_AFTER_CHANGE = "profile-after-change" ; static final String PROFILE_BEFORE_CHANGE = "profile-before-change" ; static final String PROFILE_DIR = ( ( Mozilla . SEPARATOR_OS ) + "eclipse" ) + ( Mozilla . SEPARATOR_OS ) ; static final String PROFILE_DO_CHANGE = "profile-do-change" ; static final String PROPERTY_PROXYPORT = "network.proxy_port" ; static final String PROPERTY_PROXYHOST = "network.proxy_host" ; static final String SEPARATOR_LOCALE = "-" ; static final String SHUTDOWN_PERSIST = "shutdown-persist" ; static final String STARTUP = "startup" ; static final String TOKENIZER_LOCALE = "," ; static final String URI_FROMMEMORY = "file://////" ; static final String XULRUNNER_PATH = "org.eclipse.swt.browser.XULRunnerPath" ; static final String GRE_INITIALIZED = "org.eclipse.swt.browser.XULRunnerInitialized" ; public void create ( Composite parent , int style ) { delegate = new MozillaDelegate ( browser ) ; Display display = parent . getDisplay ( ) ; int [ ] result = new int [ 1 ] ; if ( ! ( Mozilla . Initialized ) ) { boolean initLoaded = false ; boolean IsXULRunner = false ; String greInitialized = System . getProperty ( Mozilla . GRE_INITIALIZED ) ; if ( "true" . equals ( greInitialized ) ) { Mozilla . Initialized = true ; } String mozillaPath = System . getProperty ( Mozilla . XULRUNNER_PATH ) ; if ( mozillaPath == null ) { try { <START_BUG> Class clazz = Class . forName ( "org.eclipse.swt.browser.XULRunnerInitializer" ) ; <END_BUG> mozillaPath = System . getProperty ( Mozilla . XULRUNNER_PATH ) ; } catch ( ClassNotFoundException e ) { } } if ( mozillaPath == null ) { try { String libName = delegate . getSWTInitLibraryName ( ) ; Library . loadLibrary ( libName ) ; initLoaded = true ; } catch ( UnsatisfiedLinkError e ) { } } else { mozillaPath += ( Mozilla . SEPARATOR_OS ) + ( delegate . getLibraryName ( ) ) ; IsXULRunner = true ; } if ( initLoaded ) { GREVersionRange range = new GREVersionRange ( ) ; byte [ ] bytes = MozillaDelegate . wcsToMbcs ( null , Mozilla . GRERANGE_LOWER , true ) ; int lower = C . malloc ( bytes . length ) ; C . memmove ( lower , bytes , bytes . length ) ; range . lower = lower ; range . lowerInclusive = Mozilla . LowerRangeInclusive ; bytes = MozillaDelegate . wcsToMbcs ( null , Mozilla . GRERANGE_UPPER , true ) ; int upper = C . malloc ( bytes . length ) ; C . memmove ( upper , bytes , bytes . length ) ; range . upper = upper ; range . upperInclusive = Mozilla . UpperRangeInclusive ; int length = XPCOMInit . PATH_MAX ; int greBuffer = C . malloc ( length ) ; int propertiesPtr = C . malloc ( ( 2 * ( C . PTR_SIZEOF ) ) ) ; int rc = XPCOMInit . GRE_GetGREPathWithProperties ( range , 1 , propertiesPtr , 0 , greBuffer , length ) ; if ( rc != ( XPCOM . NS_OK ) ) { C . free ( lower ) ; bytes = MozillaDelegate . wcsToMbcs ( null , Mozilla . GRERANGE_LOWER_FALLBACK , true ) ; lower = C . malloc ( bytes . length ) ; C . memmove ( lower , bytes , bytes . length ) ; range . lower = lower ; rc = XPCOMInit . GRE_GetGREPathWithProperties ( range , 1 , propertiesPtr , 0 , greBuffer , length ) ; } C . free ( lower ) ; C . free ( upper ) ; C . free ( propertiesPtr ) ; if ( rc == ( XPCOM . NS_OK ) ) { length = C . strlen ( greBuffer ) ; bytes = new byte [ length ] ; C . memmove ( bytes , greBuffer , length ) ; mozillaPath = new String ( MozillaDelegate . mbcsToWcs ( null , bytes ) ) ; IsXULRunner = ( mozillaPath . length ( ) ) > 0 ; if ( IsXULRunner ) { byte [ ] path = MozillaDelegate . wcsToMbcs ( null , mozillaPath , true ) ; rc = XPCOMInit . XPCOMGlueStartup ( path ) ; if ( rc != ( XPCOM . NS_OK ) ) { IsXULRunner = false ;

Fix:
Class . forName ( "org.eclipse.swt.browser.XULRunnerInitializer" ) ;