Создание консоли в 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 напрямую.