Ich bin neu in ProcessBuilder
. Heute schreibe ich eine einfache Anwendung, um die "Java-Version" auszuführen, bekam aber immer die IOException
.Got IOException CreateProcess Fehler = 2, Das System kann die angegebene Datei nicht finden
ProcessBuilder pb = new ProcessBuilder("java -version");
try {
Map<String, String> map = pb.environment();
Process p = pb.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Die Ausnahme, wie unten geworfen
java.io.IOException: Cannot run program "java -version": CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
ich sicherstellen kann, dass JAVA_HOME
in Umgebungsvariable gesetzt ist, mein Eclipse zeigt auch auf das JDK.
JAVA_HOME=C:\JDK1.8.0_66-X64.
Kann jemand sagen, was das Problem in meinem Code/Einstellungen ist?
Sie müssen "java" und "-version" 'als separate Befehlsargumente übergeben, wenn Sie den' ProcessBuilder' konstruieren. – JonK
ProcessBuilder übernimmt das erste Element des Arrays und interpretiert es als Programm- (Befehls-) Name und der Rest von allen als Argumente für das Programm. Probieren Sie ProcessBuilder aus pb = new ProcessBuilder (new String [] {"java", "-version"}); –
@ShubhamChaurasia Es gibt einen Varargs-Konstruktor, so dass Sie das Array nicht manuell erstellen müssen – JonK