пытается захватить вывод javac в оболочке bash - PullRequest
11 голосов
/ 25 ноября 2008

Я пытаюсь перенаправить вывод компилятора Java в файл. Я думал, что это должно быть:

javac file.java > log.txt

или что-то. Вместо этого я вижу весь вывод на терминале и ничего в log.txt!

Кроме того, если я тоже хочу регистрировать ошибки, могу ли я сделать

javac file.java 2>&1 > log.txt

Ответы [ 2 ]

14 голосов
/ 25 ноября 2008
javac file.java 2> log.txt

Причина в том, что у вас есть два дескриптора выходного файла вместо одного. Обычно это стандартный вывод, который вы можете перенаправить с помощью>, и он должен использоваться для получения результата. Второй, stderr, предназначен для удобочитаемого вывода, такого как предупреждения, ошибки, текущее состояние и т. Д., Этот перенаправляется с помощью 2>.

Ваша вторая строка, используя 2> & 1, перенаправляет stderr в stdout и, наконец, stdout в log.txt.

7 голосов
/ 25 ноября 2008

Вы пробовали

javac -Xstdout log.txt file.java

Это отправит ошибки компилятора в файл журнала вместо stderr.

...