I\'m trying to execute a new process and read from its input stream in Java. I have successfully used Runtime.getRuntime().exec(String) to start and receive input from sever
A process typically has not only one but two output streams associated with it. These are:
Javac writes to stderr, not stdout, so you don't read its output.
Because it is inconvenient to have to read both of them (Some years ago, I had to write an extra thread for this), they introduced a new API to system processes, namely the ProcessBuilder, which allows to redirect stderr to stdout.
Just replace the lines
Process proc = Runtime.getRuntime().exec(command);
InputStream in = proc.getInputStream();
with
ProcessBuilder pb = new ProcessBuilder(command);
pb.redirectErrorStream(true);
Process proc = pb.start();
, add the required imports, and your test succeeds :).