問題タブ [jline2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
478 参照

java - jline2 は、telnet コンソールで "\n" を出力すべきときに "^J" を出力します

JLine 2 (v2.13) を Socket IO と組み合わせて使用​​し、通常の telnet クライアント経由でアクセスできるアプリ用の管理コンソールを作成しています。ただし、改行を出力する必要があるときに奇妙な記号を出力することがわかりました。

正しい出力は次のようになります。

コードをたどると、問題の原因となった次のコード行が見つかりました。

ここに画像の説明を入力

もう 1 つの奇妙な点は、上向き矢印を押して履歴を取得すると、コンソールが出力され^[[A、他に何も起こらないことです。

誰にもアイデアはありますか?

更新:関連するソースコードを追加

  1. 着信 telnet 接続を受け入れるコード:

ここに画像の説明を入力

  1. ConsoleReaderを作成してコマンドをディスパッチするコード:

ここに画像の説明を入力

更新 2

すいません、いつの間にか消えてました。私のプロジェクトが私に新鮮な空気を吹き込んでくれるので、戻ってきてください。だからここに何が起こったのですか:私は作成し、問題PrintWriterの回避策としてそれを使用しました:^J

ここに画像の説明を入力

jline2ただし、 を telnet セッションと一緒に使用すると、他にも多くの問題があります。

  1. タイプ<TAB>は、完全なリストをアクティブにする代わりにタブを表示します。ただし、Enter キーを押すと、完全なリストとエラー メッセージが表示されます。 ここに画像の説明を入力
  2. 矢印<UP>を入力して を表示し^[[A、Enter キーを押すと、最後のコマンドが実行されます。ただし、コマンドライン編集を失いました

問題はまだ残っており、ガイドが必要なだけで解決する方法があるはずだと思います...

0 投票する
2 に答える
4676 参照

java - 独自のプロンプトを備えた Java コマンドライン アプリ

私はJAVAコンソールアプリケーションを書いています。ユーザーが jar を起動すると、コマンドを入力できる Linux シェルのようなコマンドラインが表示されます。これは私が以前にプログラムしたことがないものです。通常、GUI を作成するか、解析されるいくつかの引数で jar を開始します。

基本的に私は2つの質問があります:

  1. コマンドラインからユーザー入力を読み取り、コマンドを解析してプロンプトを生成するのに役立つサードパーティライブラリはありますか? メイン クラスで渡された引数を解析するには、通常 Apache Commons CLI で使用します。ここもフルに使うか、もっといい方法はないか。
  2. 「無限の入力」を提供するためのベストプラクティスはありますか? 私が見つけたすべてのソリューションは、次のように 10 年以上前のものです。

    これはまだベストプラクティスですか、それともより良い方法がありますか?

0 投票する
0 に答える
48 参照

java - Jline2でJavaを使用してダブルタブキーの押下を識別することは可能ですか

Java 1.7 で Jline2 を使用して CLI インターフェイスを生成しています。コンソール リーダーでダブル タブ キーの押下をキャプチャする必要があります。可能であれば、同じ実装方法を教えてください。

0 投票する
1 に答える
30 参照

java - Java で Jline 2.14 を使用すると、最初の文字が検出/印刷されない

上記のコードをコマンド プロンプトで実行すると、入力された最初の文字が検出されません。上記のロジックは、Jline2.14 コンソール リーダーでダブル タブ キーの押下を検出するために使用されます。

0 投票する
1 に答える
1502 参照

java - jLine を使用した Java コンソール アプリケーション

マルチスレッド Java コンソール アプリケーションがあります。スレッドの 1 つはユーザーからの入力を読み取り、他のスレッドはコンソールにデータを出力します。この問題は、ユーザーが入力を入力しているときにライター スレッドが何かを出力すると発生します。ユーザーの邪魔になります。

出力の先頭に「\r」を書き、見栄えを良くするために行をクリアしました。ただし、ユーザーがその瞬間まで入力したものを次の行に出力したい。

たとえば、入力として 123456 を入力します。しかし、123と入力すると、

ライタースレッドは「OUTPUT」を出力します。

以前に入力したもの ("123") を表示してから、残りの入力を入力します。

jLine を使用するように提案されました。しかし、私はそれを達成できませんでした。jLine ライブラリの使用例を提供したり、代替ソリューションを提案したりして、私を助けてくれませんか?

ライター スレッドをブロックしないことが重要です。到着時に出力を印刷する必要があります。