Agradeceríamos tu ayuda para extender nuestros tutoriales sobre las ciencias de la computación.
Solución:
Sé que la gente recomienda mantenerse alejado de rt.exec(String), pero esto funciona y no sé cómo cambiarlo en el array versión.
rt.exec("cmd.exe /c cd ""+new_dir+"" & start cmd.exe /k "java -flag -flag -cp terminal-based-program.jar"");
Si está ejecutando dos comandos a la vez solo para cambiar el directorio en el que se ejecuta el símbolo del sistema, hay una sobrecarga para el método Runtime.exec que le permite especificar el directorio de trabajo actual. Me gusta,
Runtime rt = Runtime.getRuntime();
rt.exec("cmd.exe /c start command", null, new File(newDir));
Esto abrirá el símbolo del sistema en el directorio en newDir. Creo que su solución también funciona, pero esto mantiene su comando string o array un poco más limpio.
Hay una sobrecarga por tener el comando como un string y tener el comando como una cadena array.
Sin embargo, puede que le resulte aún más fácil utilizar ProcessBuilder, que tiene un directory
método para establecer su directorio de trabajo actual.
Espero que esto ayude.
public static void main(String[] args)
try
String ss = null;
Process p = Runtime.getRuntime().exec("cmd.exe /c start dir ");
BufferedWriter writeer = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
writeer.write("dir");
writeer.flush();
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
System.out.println("Here is the standard output of the command:n");
while ((ss = stdInput.readLine()) != null)
System.out.println(ss);
System.out.println("Here is the standard error of the command (if any):n");
while ((ss = stdError.readLine()) != null)
System.out.println(ss);
catch (IOException e)
System.out.println("FROM CATCH" + e.toString());
Reseñas y puntuaciones del artículo
Si estás de acuerdo, eres capaz de dejar una crónica acerca de qué le añadirías a este tutorial.