0

JLine ライブラリを使用して、コンソールの入出力を処理します。

Terminal terminal = TerminalFactory.getFlavor(TerminalFactory.Flavor.valueOf("UNIX"));
terminal.init();
terminal.setEchoEnabled(true);
ConsoleReader console = new ConsoleReader(System.in,System.out);
int key = console.readCharacter();

JLine v2.6 を使用しています。エコーが効かない。上記のコードの何が問題になっていますか? 誰か助けてくれませんか?

JLine のような他のライブラリを探すのにうんざりしています。コンソール入力を処理する他の Java ライブラリはありますか?

4

2 に答える 2

2

JLine は、実行するすべてのプラットフォームでネイティブコードを使用します。一部のプラットフォームの一部の端末には、箱から出してすぐに動作するための正しい設定がありません。

既定の動作は、プラットフォームのネイティブ ターミナルのためにプラットフォームによって異なりますが、セットアップと構成が正しく行われると、非常にうまく機能します。ほとんどの場合、問題は端末エミュレーションの設定であり、JLine とは関係ありません。

そうは言っても、OSX ( bash )、Windows、および RHEL/Centos ( bash ) で大きな成功を収めています。

于 2012-06-15T19:48:54.373 に答える
1

ConsoleReaderreadCharacter();は反響しないようですがreadLine()、反響readLine(String prompt)します。

(簡単に入手できる)console.readCharacter()メソッドのソースを見ると、(プライベート) clearEcho() が明示的に呼び出され、ポインターを戻すことでエコーがクリアされます。

ドキュメントは少し薄いですが、jLine は GNU readLineおよび BSD editLineと互換性があるように設計されているため、ライン処理のコンソール サポートを提供することに重点が置かれているようです。

文字処理が提供されていると思いますが、文字をエコーする責任があります。

于 2012-12-02T20:58:11.200 に答える