user2110167 user2110167 - 4 months ago 15
Java Question

Runtime's exec() method is not redirecting the output

Process p = Runtime.getRuntime().exec("sh somescript.sh &> out.txt");


I am running this command using Java. The script is running but it's not redirecting its stream to the file. Moreover, the file
out.txt
is not getting created.

This script runs fine if I run it on shell.

Any ideas?

Answer

You need to use ProcessBuilder to redirect.

ProcessBuilder builder = new ProcessBuilder("sh", "somescript.sh");
builder.redirectOutput(new File("out.txt"));
builder.redirectError(new File("out.txt"));
Process p = builder.start(); // may throw IOException
Comments