NullPointerException в readLine Консоли ()

Это:

Console c = System.console();
        String readline;
        String u = c.readLine("%s", "args");

Броски a NullPointerException. Все же подпись метода:

 public String readLine(String fmt, Object... args)

Почему это исключение бросает?

5
задан andandandand 16 December 2009 в 22:34
поделиться

6 ответов

Console c = System.console();

Is c null?

Doc:

public static Console console()

Returns the unique Console object associated with the current Java virtual machine, if any.

Returns: The system console, if any, otherwise null.

17
ответ дан 18 December 2019 в 05:36
поделиться

NullPointerException is a RuntimeException, which means it doesn't have to be declared in the method signature.

4
ответ дан 18 December 2019 в 05:36
поделиться

Is c null somehow?

By the way, your readLine statement is equivalent to c.readLine("args") - is that what you intend?

2
ответ дан 18 December 2019 в 05:36
поделиться

Во фрагменте кода есть что-то странное. Вы объявляете переменную с именем "readline", но не инициализируете ее и не используете.

Возможно ли, что в программе вы каким-то образом используете эту переменную без ее инициализации? (длинный выстрел, я знаю)

1
ответ дан 18 December 2019 в 05:36
поделиться

System.console () вернула null, это единственная строка в этом фрагменте кода, которая могла вызвать исключение с нулевым указателем.

2
ответ дан 18 December 2019 в 05:36
поделиться

через: http://www.codeguru.com/forum/showthread.php?t=487190 подробнее

Перед использованием метода всегда платит прочтите документы API о том, что делает этот метод. Например, в документации по методу console () говорится:

Цитата:

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

Если на этой виртуальной машине есть консоль то он представлен уникальным экземпляр этого класса, который может быть полученный с помощью System.console () метод. Если нет консоли устройство доступно, тогда вызов этого метода вернет null. этот метод вернет null.

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

В качестве альтернативы использование класса Scanner будет работать внутри вашей IDE:

Scanner sc = new Scanner (System.in);

4
ответ дан 18 December 2019 в 05:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: