blob: 0063b5ae2f259a199e0c59513c3b3467b2189220 [file] [log] [blame]
/*
* (c) Copyright IBM Corp. 2000, 2001.
* All Rights Reserved.
*/
package org.eclipse.jdt.internal.launching.macosx;
import java.io.*;
import java.util.Map;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.internal.launching.StandardVMRunner;
import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
import org.eclipse.jdt.launching.IVMInstall;
import org.eclipse.jdt.launching.VMRunnerConfiguration;
public class MacOSXVMRunner extends StandardVMRunner {
public MacOSXVMRunner(IVMInstall vmInstance) {
super(vmInstance);
}
protected String constructProgramString(VMRunnerConfiguration config) {
String command= null;
Map map= config.getVMSpecificAttributesMap();
if (map != null) {
command = (String)map.get(IJavaLaunchConfigurationConstants.ATTR_JAVA_COMMAND);
}
StringBuffer buff= new StringBuffer(getJDKLocation());
buff.append(File.separator);
buff.append("bin"); //$NON-NLS-1$
buff.append(File.separator);
String jdkLocation= buff.toString();
if (command == null) {
buff.append("java"); //$NON-NLS-1$
return adjustProgramString(buff.toString());
}
buff.append(command);
String program= buff.toString();
File javaCommand= new File(program);
if (!javaCommand.isFile()) {
File java= new File(jdkLocation + "java"); //$NON-NLS-1$
if (java.isFile())
program= java.getAbsolutePath();
}
return program;
}
protected boolean shouldIncludeInPath(String path) {
return true;
}
protected Process exec(String[] cmdLine, File workingDirectory) throws CoreException {
String[] cmdLine2= new String[cmdLine.length + 2];
String wrapper= MacOSXLaunchingPlugin.createWrapper(getClass(), "start_carbon.sh"); //$NON-NLS-1$
int j= 0;
cmdLine2[j++]= "/bin/sh"; //$NON-NLS-1$
cmdLine2[j++]= wrapper;
for (int i= 0; i < cmdLine.length; i++)
cmdLine2[j++]= cmdLine[i];
return super.exec(cmdLine2, workingDirectory);
}
}