2010-04-27 3 views
6

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

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

+0

Можете ли вы разместить фрагмент своего кода? SSCCE http://sscce.org/ обычно очень полезен. – Kylar

ответ

6

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

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

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

Это будет выглядеть следующим образом:

alt text http://img122.imageshack.us/img122/5692/dibujoof2.png

Источник: Create Java console inside a GUI panel

+0

Спасибо, приятель, я, должно быть, пропустил это. Upvoted. – Puppy

+2

Является ли это только я, или изображение было заменено рекламой приложения iOS? – Puppy

+0

@Puppy - Это не только вы. Изображение связано с внешним сайтом, а не сменяется на обмен, поэтому кто-то изменил изображение в своем источнике. –

4

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

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

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

0

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

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

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

+0

RE: OP Edit. Всем спасибо. – Puppy

+0

@DeadMG - адресовано ваше редактирование. – justkt

5

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

Из Console entry в API (курсив мой):

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

+0

, если вы вызываете виртуальную машину с помощью «javaw MyClass», например, у вас не будет консоли, но если вы вызовете ее с помощью «java MyClass» из командной строки, вы будете (на версии 1.6 или выше JVM). – Justin

-1

См JConsole, которая является общей консоли в Java, используется, например, с помощью заводной. Или посмотрите прямолинейно.

Смежные вопросы