2016-09-06 3 views
3

Я использую System.console(), чтобы прочитать пароль пользователя.Java: как читать пароль из файла?

Мой код:

Console console = System.console(); 
    if (console == null) { 
     throw new RuntimeException("No console is available for input"); 
    } 

    System.out.print("Enter the password: "); 
    String password = new String(console.readPassword()); 

Это работает хорошо, когда я бегу он просто (от Redhat).

Проблема заключается в том, когда я пытаюсь прочитать пароль из текстового файла:

java -jar my_jar.jar < password.txt

я получаю:

Нет консоли не доступна для ввода.

Как это можно решить?

+0

Это звучит как известная ошибка/проблема: System.console возвращает null. Для получения информации и возможных обходных решений см. Ответы на этот вопрос: http://stackoverflow.com/questions/4203646/system-console-returns-null – Akunosh

ответ

0

Ожидается такое поведение. Цитата java.io.Console:

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

Для возможного решения без использования Cosole вы можете прочитать этот ответ Trying to read from the console in Java.

Вы можете использовать консоль, если она присутствует, и не вернуться к BufferedReader/Scaner если нет.

+0

Спасибо, Но я хочу использовать опцию пуска паролей java console. –

+0

Вы можете использовать консоль, если она присутствует, и не возвращаться к BufferedReader/Scaner, если нет. Я не понимаю, как вы можете использовать опцию парольной обфускации java console, если у вас нет консоли. – chimmi

+0

Я не хочу использовать BufferedReader/Scaner, потому что тогда я рискую, что пользователь установит пароль без обфускации. В любом случае, вы, вероятно, правы, и решения нет. Я добавлю вариант отправки пароля в текстовый файл. –

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