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")
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 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
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: