Создание консоли в Java

когда я пытаюсь использовать java.ленг.Система.консоль(), я получаю нулевой указатель. Я все еще могу писать и читать из in, но это работает только тогда, когда я бегу прямо из своей IDE. Когда я управляю .jar-файл напрямую, ничего не происходит. Как я могу создать консоль, как я бы видел, используя std:: cout для использования в Java?

изменить: Я надеялся просто создать его, а не понять, почему у меня его нет, поскольку он нужен для работы моей программы.

5 ответов


возможно, вы пытаетесь получить консоль, дважды щелкнув в банке

попробуйте создать пакетный файл, который открывает консоль для вас.

однако вы можете создать консоль с помощью Swing и перенаправить стандартный ввод/вывод там.

источник: создать консоль Java внутри панели GUI


Как именно вы запускаете файл JAR? Это было бы ожидаемым поведением для двойного щелчка по его значку в Проводнике Windows, как упоминал Келли, но не для запуска его из командной строки.

с запись консоли в API (акцент мой):

зависит ли виртуальная машина от консоли базовая платформа, а также на способ, которым виртуальная машина вызывается. Если виртуальная машина запускается из интерактивной командной строки без перенаправления стандартных потоков ввода и вывода, то ее консоль будет существовать и, как правило, будет подключена к клавиатуре и дисплею, с которого была запущена виртуальная машина. Если виртуальная машина запускается автоматически, например с помощью планировщика фоновых заданий, консоль обычно отсутствует.


java.lang.System.out и java.lang.System.in являются потоки ввода/вывода для доступа к консоли. Java не будет создавать "консоль", но позволяет взаимодействовать с потоками ввода-вывода, предоставляемыми операционной системой.

когда вы запустите его из файла jar (например, нажав на него из папки), вы получите потоки ввода-вывода GUI, которые нигде не отображаются.

попробуйте создать пакетный файл с командой "java-jar" в нем. При запуске пакетного файла должно появиться окно команд. Я предполагая, что окна здесь. Другой способ-запустить cmd.exe непосредственно с аргументами, которые держат окно открытым, т. е. " cmd.exe / c".


вместо того, чтобы запускать файл jar напрямую, откройте консоль (вы не указали операционную систему, но это будет командная строка в Windows и консоль на *Nix или терминал на OS X). Затем запустите java -jar /path/to/your.jar.

в эквиваленте std::cout в Java будет System.out Как вы, наверное, уже знаете.

EDIT: что касается вашего редактирования, для этого есть код. Например, вы можете использовать качели. Там даже StackOverflow ответ С более чем одним образцом рабочего кода.


посмотреть утилиты jconsole, который является общей консолью в java, используемой, например, groovy. Или увидеть groovy напрямую.