Стандартный вывод Runtime.exec не отправляется автоматически на стандартный вывод вызывающей стороны.
Что-то вроде этого должно быть сделано - получить доступ к стандартному выводу разветвленного процесса, прочитать его, а затем записать. Обратите внимание, что выходные данные разветвленного процесса доступны родительскому элементу с помощью метода getInputStream()
экземпляра Process.
public static void main(String[] args) throws Exception {
System.setOut(new PrintStream(new FileOutputStream("test.txt")));
System.out.println("HelloWorld1");
try {
String line;
Process p = Runtime.getRuntime().exec( "echo HelloWorld2" );
BufferedReader in = new BufferedReader(
new InputStreamReader(p.getInputStream()) );
while ((line = in.readLine()) != null) {
System.out.println(line);
}
in.close();
}
catch (Exception e) {
// ...
}
}