2016-09-06 1 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コンソールを提供したいと思います。 –

+0

コンソールが存在する場合はそれを使い続けることができ、そうでない場合はBufferedReader/Scanerにフェールバックすることができます。私はあなたがコンソールを持っていない場合はどのように 'パスワードの難読化オプションのJavaコンソールを提供する'を使用することができます理解していない。 – chimmi

+0

BufferedReader/Scanerを使用したくないのは、ユーザーが難読化せずにパスワードを設定する危険があるからです。とにかく、あなたはおそらく正しいでしょうし、解決策はありません。パスワードをテキストファイルに送信するオプションを追加します。 –

関連する問題