uso por pasar parametros linea limpiar ejecutar desde cual con como comandos comando argumento java command-line runtime.exec

limpiar - pasar parametros por linea de comandos java



Ejecutando la lĂ­nea de comando en Java (8)

¿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

Esta pregunta ya tiene una respuesta aquí:

¿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.


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 here ).

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(); }


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.


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(); } }


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



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


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 ()