trying to capture javac output in bash shell
Question
I'm trying to redirect the java compiler output to a file. I thought it's supposed to be:
javac file.java > log.txt
or something. Instead, I see all the output on the terminal and nothing in log.txt!
Also, if I want to log errors too, do I do
javac file.java 2>&1 > log.txt
?
Solution
javac file.java 2> log.txt
The reason is that you have two output file descriptors instead of one. The usual one is stdout, which you can redirect with > and it's supposed to be used for resulting output. The second one, stderr, is meant for human readable output like warnings, errors, current status etc., this one is redirected with 2>.
Your second line, using 2>&1, redirects stderr to stdout and finally stdout into log.txt.
OTHER TIPS
Have you tried
javac -Xstdout log.txt file.java
This will send compiler errors to a log file instead of stderr.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow