Bug 64339 Javadoc export fails with ArrayIndexOutOfBoundsException [javadoc]
M9 I'm running Eclipse with a JRE. When I selected File/Export/Javadoc nothing happens and I get the log entry below. I had to copy the Javadoc executables from my JDK directory to the JRE directory to workaround. I should get an error message saying that the Javadoc command could not be found and that I need a JDK in order to use Javadoc export. It would be nice if the system search path would be used to find the Javadoc executable. !ENTRY org.eclipse.ui 4 0 May 26, 2004 17:35:31.317 !MESSAGE 1 !STACK 0 java.lang.ArrayIndexOutOfBoundsException: 1 at org.eclipse.jdt.internal.ui.javadocexport.JavadocOptionsManager.findJavaDocCommand(JavadocOptionsManager.java:1091) at org.eclipse.jdt.internal.ui.javadocexport.JavadocOptionsManager.initJavadocCommandDefault(JavadocOptionsManager.java:1069) at org.eclipse.jdt.internal.ui.javadocexport.JavadocOptionsManager.<init>(JavadocOptionsManager.java:162) at org.eclipse.jdt.internal.ui.javadocexport.JavadocWizard.init(JavadocWizard.java:510) at org.eclipse.ui.internal.dialogs.WorkbenchWizardNode.getWizard(WorkbenchWizardNode.java:157) at org.eclipse.jface.wizard.WizardSelectionPage.getNextPage(WizardSelectionPage.java:96) at org.eclipse.ui.internal.dialogs.WorkbenchWizardSelectionPage.getNextPage(WorkbenchWizardSelectionPage.java:82) at org.eclipse.jface.wizard.WizardDialog.nextPressed(WizardDialog.java:672) at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:300) at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:505) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:89) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:796) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2716) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2382) at org.eclipse.jface.window.Window.runEventLoop(Window.java:668) at org.eclipse.jface.window.Window.open(Window.java:648) at org.eclipse.ui.actions.ExportResourcesAction.run(ExportResourcesAction.java:162) at org.eclipse.jface.action.Action.runWithEvent(Action.java:881) at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:899) at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:850) at org.eclipse.jface.action.ActionContributionItem$7.handleEvent(ActionContributionItem.java:769) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:796) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2716) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2382) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1363) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1334) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:253) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:141) at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:97) at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:307) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:256) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:127) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.core.launcher.Main.basicRun(Main.java:185) at org.eclipse.core.launcher.Main.run(Main.java:638) at org.eclipse.core.launcher.Main.main(Main.java:622)
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javadocexport/JavadocOptionsManager.java
}
	
	private String flatStringList(String[] paths) {
		StringBuffer buf= new StringBuffer();
		for (int i= 0; i < paths.length; i++) {
			if (i > 0) {
				buf.append(File.pathSeparatorChar);
			}
			buf.append(paths[i]);
		}
		return buf.toString();
	}
	
	private String[] arrayFromFlatString(String str) {
		StringTokenizer tok= new StringTokenizer(str, File.pathSeparator);
		String[] res= new String[tok.countTokens()];
		for (int i= 0; i < res.length; i++) {
			res[i]= tok.nextToken();
		}
		return res;
	}
	
	public void getArgumentArray(List vmArgs, List toolArgs) {
		
		vmArgs.add(getJavadocCommandHistory()[0]);
		if (fFromStandard) {
			toolArgs.add("-d"); 
			toolArgs.add(fDestination);
		} else {
			if (fAdditionalParams.length() + fVMParams.length() != 0) {