„Verwenden von ProcessBuilder zur Ausgabeumleitung“
<p>Ich versuche, die Ausgabe eines von ProcessBuilder gestarteten Prozesses mit dem folgenden Code umzuleiten: </p>
<pre class="brush:php;toolbar:false;">ProcessBuilder pb = new ProcessBuilder("/myScript >> /myLogFile 2>&1 <& - &");
Map<String, String>
env.clear();
env.put("var1", "val1");
env.put("var2", "val2");
pb.redirectErrorStream(true);
Prozess p = pb.start();</pre>
<p>Aber es schlug fehl und löste eine Ausnahme aus: </p>
<blockquote>
<p>Ausnahme im Thread „main“
java.io.IOException: Kann nicht ausgeführt werden
Programm
"/myScript>>
/myLogFile
2>&1 <& - &": java.io.IOException:
Fehler=2, Keine solche Datei oder kein solches Verzeichnis unter
java.lang.ProcessBuilder.start(ProcessBuilder.java:460)</p>
</blockquote>
<p>Wenn ich einfach „/myScript“ übergebe, funktioniert es einwandfrei. </p>
<p>Das Skript ist Perl. Gibt es Vorschläge/Kommentare dazu, warum es fehlschlägt? </p>
<p>Ich habe versucht, sie als separate Parameter wie <code>new ProcessBuilder("/myScript",">>","/myLogFile")</code> zu übergeben, und es hat funktioniert, aber es erfolgt keine Weiterleitung Protokolldateien, noch werden envVars akzeptiert. </p>