Ejecutando la línea de comando en Java

¿Hay alguna manera de ejecutar esta línea de comando dentro de una aplicación Java?

java -jar map.jar time.rel test.txt debug 

Puedo ejecutarlo con el comando pero no pude hacerlo dentro de Java.

 Runtime rt = Runtime.getRuntime(); Process pr = rt.exec("java -jar map.jar time.rel test.txt debug"); 

http://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html

También puede ver el resultado de esta manera:

 final Process p = Runtime.getRuntime().exec("java -jar map.jar time.rel test.txt debug"); new Thread(new Runnable() { public void run() { BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); String line = null; try { while ((line = input.readLine()) != null) System.out.println(line); } catch (IOException e) { e.printStackTrace(); } } }).start(); p.waitFor(); 

Y no lo olvide, si está ejecutando en Windows, debe poner “cmd / c” delante de su comando.

Para evitar que el proceso llamado sea bloqueado si genera una gran cantidad de datos en la salida estándar y / o error, debe usar la solución provista por Craigo. Tenga en cuenta también que ProcessBuilder es mejor que Runtime.getRuntime (). Exec (). Esto se debe a un par de razones: tokenizes mejor los argumentos, y también se encarga de la salida estándar de error (consulte también aquí ).

 ProcessBuilder builder = new ProcessBuilder("cmd", "arg1", ...); builder.redirectErrorStream(true); final Process process = builder.start(); // Watch the process watch(process); 

Utilizo una nueva función “mirar” para reunir estos datos en un nuevo hilo. Este hilo finalizará en el proceso de llamada cuando finalice el proceso llamado.

 private static void watch(final Process process) { new Thread() { public void run() { BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream())); String line = null; try { while ((line = input.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } } }.start(); } 
 import java.io.*; Process p = Runtime.getRuntime().exec("java -jar map.jar time.rel test.txt debug"); 

Considere lo siguiente si se encuentra con más problemas, pero supongo que lo anterior funcionará para usted:

Problemas con Runtime.exec ()

 Runtime.getRuntime().exec("java -jar map.jar time.rel test.txt debug"); 

¿Has probado el comando exec dentro de la clase Runtime?

 Runtime.getRuntime().exec("java -jar map.jar time.rel test.txt debug") 

Runtime – Documentación de Java

 Process p = Runtime.getRuntime().exec("java -jar map.jar time.rel test.txt debug"); 

qué pasa

 public class CmdExec { public static Scanner s = null; public static void main(String[] args) throws InterruptedException, IOException { s = new Scanner(System.in); System.out.print("$ "); String cmd = s.nextLine(); final Process p = Runtime.getRuntime().exec(cmd); new Thread(new Runnable() { public void run() { BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); String line = null; try { while ((line = input.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } } }).start(); p.waitFor(); } } 
Intereting Posts