2016-09-06 3 views
3

사용자 비밀번호를 읽으려면 System.console()을 사용하고 있습니다.Java : 파일에서 비밀번호를 읽는 방법?

내 코드 : 나는 간단 (Redhat에서) 실행하고 때

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()); 

그것은 잘 작동합니다.

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

고마워,하지만 난 자바 콘솔 비밀 번호 옵션을 사용하고 싶습니다. –

+0

콘솔이있는 경우 콘솔을 계속 사용하고 그렇지 않은 경우 BufferedReader/Scaner로 장애 복구합니다. 콘솔이 없다면 '암호 난독 화 옵션 java 콘솔을 사용할 수있는 방법'을 이해하지 못합니다. – chimmi

+0

BufferedReader/Scaner를 사용하고 싶지는 않습니다. 사용자가 난독 화없이 암호를 설정할 위험이 있기 때문입니다. 어쨌든, 당신은 아마 맞고 해결책이 없습니다. 암호를 텍스트 파일로 보내는 옵션을 추가하겠습니다. –

관련 문제