}
List<String> cmd = new ArrayList<String>();
- String emulatorCmd = "\"" + binaryPath + "\" --conf \"" + configPath + "\"" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- + getProxyArgument(property);
- if (EmulatorManager.isWin()) {
- cmd.add("cmd"); //$NON-NLS-1$
- cmd.add("/c"); //$NON-NLS-1$
- } else {
- cmd.add("/bin/sh"); //$NON-NLS-1$
- cmd.add("-c"); //$NON-NLS-1$
+
+ // set executable and config file
+ cmd.add(binaryPath);
+ cmd.add("--conf");
+ cmd.add(configPath);
+
+ // set proxy argument
+ String hostProxy = NetProxyOption.getHostProxyCmd(property);
+ if (!hostProxy.isEmpty()) {
+ cmd.add("--" + OPTION_KEY.VAR_NETWORK_PROXY.toString());
+ cmd.add(hostProxy);
}
- // Add log redirection to command.
- cmd.add(emulatorCmd + getLogRedirectCmd(property.getName()));
- System.out.println("Launch command : " + emulatorCmd); //$NON-NLS-1$
- EMLogger.getLogger().log(Level.INFO, "Starting Emulator Command : "); //$NON-NLS-1$
- EMLogger.getLogger().log(Level.INFO, emulatorCmd);
- return cmd;
- }
+ String commandLineCmd = "\"" + binaryPath + "\" --conf \"" + configPath + "\""
+ + (hostProxy.isEmpty() ? "" : " --" + OPTION_KEY.VAR_NETWORK_PROXY.toString()
+ + " \"" + hostProxy + "\"");
+ System.out.println("Launch command : " + commandLineCmd); //$NON-NLS-1$
+ EMLogger.getLogger().log(Level.INFO, "Starting Emulator Command : "); //$NON-NLS-1$
+ EMLogger.getLogger().log(Level.INFO, commandLineCmd);
- private static String getProxyArgument(VMProperty property) throws VMLauncherException {
- String hostProxy = NetProxyOption.getHostProxyCmd(property);
- if (hostProxy.isEmpty()) {
- return ""; //$NON-NLS-1$
+ return cmd;
- } else {
- return " --" + OPTION_KEY.VAR_NETWORK_PROXY.toString() //$NON-NLS-1$
- + " \"" + hostProxy + "\""; //$NON-NLS-1$ //$NON-NLS-2$
- }
}
- private static String getLogRedirectCmd(String vmName) {
- return " > \"" + VMLogUtil.getEmulatorLogPath(vmName) + "\" 2>&1"; //$NON-NLS-1$ //$NON-NLS-2$
- }
private static void checkDiskImage(VMProperty property)
throws VMLauncherException {
public static Process launch(String vmName, String emulatorPath,
List<String> cmd, String binPath) {
ProcessBuilder pb = new ProcessBuilder(cmd);
+ EMLogger.getLogger().log(Level.INFO, "Command list for ProcessBuilder");
+ EMLogger.getLogger().log(Level.INFO, cmd.toString());
+
+ // redirect stdout, stderr to log file
+ pb.redirectErrorStream(true);
+ pb.redirectOutput(new File(VMLogUtil.getEmulatorLogPath(vmName)));
// Make backup log.
VMLogUtil.makeVMBackupLog(vmName);