Это действительно зависит от того, как вы запускаете приложение. Например, если бы вы запускали графический интерфейс из командной строки Windows (например, например java -jar myApp.jar
), то, как и следовало ожидать, System.out и System.err будут переходить на консоль. Если вы запускаете с помощью самой оболочки Windows (например, двойной щелчок на исполняемом JAR-файле), то, насколько мне известно, эти потоки ошибок будут потеряны. Настройка выполнения приложения как службы (как бы маловероятно это ни звучало в вашей ситуации) также приведет к потере выходных потоков.
Использование стандарта в потоках put и output, как правило, не является хорошей идеей, если только вы не ожидаете, что ваша программа будет вызываться в среде типа shell-script, где это общие каналы связи. Как вы обнаружили, они обычно не очень хорошо определены в среде графического интерфейса. Если вы действительно хотите записывать текстовую информацию во время работы программы, рассмотрите возможность использования «реальной» среды ведения журналов (например, log4j или пакета java.util.logging
) для записи сообщений в журнал.