Я заметил, что любой вызов System.out.println()
из файла JAR, который не был запущен командной строкой (т. Е. Запускаемый JAR-файл, запущенный пользователем с двойным щелчком), не откроет консоль.Что такое System.out?
После выполнения некоторых исследований, я нашел несколько ответов на сайте:
-
There is no problem doing like that. But where do you expect to see the output?
What happens to “System.out.println()” in executable jar?
If you run the code in some way that doesn't attach a console - such as
javaw
on Windows, which is the default program associated with executable jar files - then the output won't go anywhere. It won't cause any errors - the text will just be lost.
От КН я понимаю, System.out
не представляет консоль. Он представляет собой данные, которые могут обрабатываться всем, что нужно отображать. Я прав?
- Что такое
System.out
? - Как открыть консоль из запускаемого JAR-файла, запущенного пользователем с помощью двойного щелчка?
Имеют ли программы, вызванные из командной строки, перенаправленные потоки, потому что сама консоль является приложением, которое запускает те, которые используют обычный API процессов Java, как и любой другой? –
@FrancescoMenzani: Программы, вызванные из командной строки, обычно * не * перенаправляют потоки. Скажем, вы выполняете 'java -r runnable.jar': ОС запускает программу' java', предоставляя ей стандартные потоки.Программа java загружает банку и выполняет свою работу по настройке потоков для 'System' в недавно загруженной JVM для чтения и вывода на потоки, полученные из ОС. –
Если у них нет перенаправленных потоков, тогда как консоль может обрабатывать свой IO? –