Wir brauchen Räume zwischen Argumente in Commandline, weil die Kommandozeile wissen müssen, welche das erste Argument, das die zweite und so weiter. Wenn wir jedoch ProcessBuilder
verwenden, können wir ein Array an es übergeben, so dass wir diese Leerzeichen nicht hinzufügen müssen, um die Argumente zu unterscheiden. Der ProcessBuilder übergibt das Befehls-Array nach einer Überprüfung direkt an das exec
. Zum Beispiel
private static final String JAVA_CMD = "java";
private static final String CP = "-cp";
private static final String CLASS_PATH = "../bin";
private static final String PROG = "yr12.m07.b.Test";
private static final String[] CMD_ARRAY = { JAVA_CMD, CP, CLASS_PATH, PROG };
ProcessBuilder processBuilder = new ProcessBuilder(CMD_ARRAY);
Der obige Code wird perfekt funktionieren.
Darüber hinaus können Sie
Runtime.getRuntime().exec("java -cp C:/testt Test");
verwenden, aber es ist bequemer Process zu verwenden, ist ein Grund, dass, wenn unser Argument Raum enthält, stellen wir Zitat in Runtime.getRuntime().exec()
wie java -cp C:/testt \"argument with space\"
übergeben müssen, aber mit Processbuilder können wir bekommen Loswerden.
ProcessBuilder processBuilder = new ProcessBuilder("command", "The first argument", "TheSecondWithoutSpace");
haben Sie einen guten Job – darijan