Bug 57299 Exception when displaying Javadoc after 'Generate Javadoc...' wizard [javadoc]
After creating a Javadoc documentation using the 'Generate Javadoc...' wizard, with the option 'Open generated index file in browser' activated, the index page doesn't show up and an exception is logged (see below). When the option 'Preferences > Help > Always use external browsers' is activated, the index page shows up correctly in the browser. Thus, it may be that the exception occurs because the Javadoc wizard is open and because it is a modal dialog, it prevents the internal browser window from being opened. Here's the exception: !ENTRY org.eclipse.core.runtime 4 2 Apr 02, 2004 21:32:08.78 !MESSAGE Problems occurred when invoking code from plug- in: "org.eclipse.core.runtime". !STACK 0 org.eclipse.swt.SWTException: Invalid thread access at org.eclipse.swt.SWT.error(SWT.java:2625) at org.eclipse.swt.SWT.error(SWT.java:2555) at org.eclipse.swt.widgets.Widget.error(Widget.java:354) at org.eclipse.swt.widgets.Shell.<init>(Shell.java:245) at org.eclipse.swt.widgets.Shell.<init>(Shell.java:236) at org.eclipse.swt.widgets.Shell.<init>(Shell.java:189) at org.eclipse.swt.widgets.Shell.<init>(Shell.java:127) at org.eclipse.help.ui.internal.util.ErrorUtil.displayErrorDialog (ErrorUtil.java:48) at org.eclipse.help.ui.internal.util.ErrorUtil.displayError (ErrorUtil.java:23) at org.eclipse.help.internal.base.HelpDisplay.displayHelpURL (HelpDisplay.java:169) at org.eclipse.help.internal.base.HelpDisplay.displayHelpResource (HelpDisplay.java:88) at org.eclipse.help.ui.internal.DefaultHelpUI.displayHelpResource (DefaultHelpUI.java:56) at org.eclipse.ui.help.WorkbenchHelp.displayHelpResource (WorkbenchHelp.java:264) at org.eclipse.jdt.internal.ui.actions.OpenBrowserUtil$1.run (OpenBrowserUtil.java:31) at org.eclipse.swt.custom.BusyIndicator.showWhile (BusyIndicator.java:51) at org.eclipse.jdt.internal.ui.actions.OpenBrowserUtil.open (OpenBrowserUtil.java:29) at org.eclipse.jdt.internal.ui.javadocexport.JavadocWizard.spawnInBrowser (JavadocWizard.java:502) at org.eclipse.jdt.internal.ui.javadocexport.JavadocWizard.access$3 (JavadocWizard.java:497) at org.eclipse.jdt.internal.ui.javadocexport.JavadocWizard$JavadocDebugEventListen er.handleDebugEvents(JavadocWizard.java:525) at org.eclipse.debug.core.DebugPlugin$EventNotifier.run (DebugPlugin.java:910) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:607) at org.eclipse.core.runtime.Platform.run(Platform.java:524) at org.eclipse.debug.core.DebugPlugin$EventNotifier.dispatch (DebugPlugin.java:942) at org.eclipse.debug.core.DebugPlugin.fireDebugEventSet (DebugPlugin.java:311) at org.eclipse.debug.core.model.RuntimeProcess.fireEvent (RuntimeProcess.java:262) at org.eclipse.debug.core.model.RuntimeProcess.fireTerminateEvent (RuntimeProcess.java:270) at org.eclipse.debug.core.model.RuntimeProcess.terminated (RuntimeProcess.java:228) at org.eclipse.debug.core.model.RuntimeProcess$ProcessMonitorJob.run (RuntimeProcess.java:356) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:62) !ENTRY org.eclipse.debug.core 4 120 Apr 02, 2004 21:32:08.78 !MESSAGE An exception occurred while dispatching debug events. !STACK 0 org.eclipse.swt.SWTException: Invalid thread access at org.eclipse.swt.SWT.error(SWT.java:2625) at org.eclipse.swt.SWT.error(SWT.java:2555) at org.eclipse.swt.widgets.Widget.error(Widget.java:354) at org.eclipse.swt.widgets.Shell.<init>(Shell.java:245) at org.eclipse.swt.widgets.Shell.<init>(Shell.java:236) at org.eclipse.swt.widgets.Shell.<init>(Shell.java:189) at org.eclipse.swt.widgets.Shell.<init>(Shell.java:127) at org.eclipse.help.ui.internal.util.ErrorUtil.displayErrorDialog (ErrorUtil.java:48) at org.eclipse.help.ui.internal.util.ErrorUtil.displayError (ErrorUtil.java:23) at org.eclipse.help.internal.base.HelpDisplay.displayHelpURL (HelpDisplay.java:169) at org.eclipse.help.internal.base.HelpDisplay.displayHelpResource (HelpDisplay.java:88) at org.eclipse.help.ui.internal.DefaultHelpUI.displayHelpResource (DefaultHelpUI.java:56) at org.eclipse.ui.help.WorkbenchHelp.displayHelpResource (WorkbenchHelp.java:264) at org.eclipse.jdt.internal.ui.actions.OpenBrowserUtil$1.run (OpenBrowserUtil.java:31) at org.eclipse.swt.custom.BusyIndicator.showWhile (BusyIndicator.java:51) at org.eclipse.jdt.internal.ui.actions.OpenBrowserUtil.open (OpenBrowserUtil.java:29) at org.eclipse.jdt.internal.ui.javadocexport.JavadocWizard.spawnInBrowser (JavadocWizard.java:502) at org.eclipse.jdt.internal.ui.javadocexport.JavadocWizard.access$3 (JavadocWizard.java:497) at org.eclipse.jdt.internal.ui.javadocexport.JavadocWizard$JavadocDebugEventListen er.handleDebugEvents(JavadocWizard.java:525) at org.eclipse.debug.core.DebugPlugin$EventNotifier.run (DebugPlugin.java:910) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:607) at org.eclipse.core.runtime.Platform.run(Platform.java:524) at org.eclipse.debug.core.DebugPlugin$EventNotifier.dispatch (DebugPlugin.java:942) at org.eclipse.debug.core.DebugPlugin.fireDebugEventSet (DebugPlugin.java:311) at org.eclipse.debug.core.model.RuntimeProcess.fireEvent (RuntimeProcess.java:262) at org.eclipse.debug.core.model.RuntimeProcess.fireTerminateEvent (RuntimeProcess.java:270) at org.eclipse.debug.core.model.RuntimeProcess.terminated (RuntimeProcess.java:228) at org.eclipse.debug.core.model.RuntimeProcess$ProcessMonitorJob.run (RuntimeProcess.java:356) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:62)
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/actions/OpenBrowserUtil.java
public static void open(final URL url, Display display, String dialogTitle) {
		if (WorkbenchHelp.getHelpSupport() != null) {
			BusyIndicator.showWhile(null, new Runnable() {
				public void run() {
					WorkbenchHelp.displayHelpResource(url.toExternalForm() + "?noframes=true"); 
				}
			});			
		} else {
			showMessage(display, dialogTitle, ActionMessages.getString("OpenBrowserUtil.help_not_available"), false); 
		}
	}
	
	private static void showMessage(Display display, final String title, final String message, final boolean isError) {
		display.asyncExec(new Runnable() {
			public void run() {
				Shell shell= JavaPlugin.getActiveWorkbenchShell();
				if (isError) {
					MessageDialog.openError(shell, title, message);
				} else {
					MessageDialog.openInformation(shell, title, message);
				}
			}
		});
	}	
}