JLine 2 (v2.13) を Socket IO と組み合わせて使用し、通常の telnet クライアント経由でアクセスできるアプリ用の管理コンソールを作成しています。ただし、改行を出力する必要があるときに奇妙な記号を出力することがわかりました。
act.app.restart restart app^Jact.job.list List jobs
正しい出力は次のようになります。
act.app.restart restart app
act.job.list List jobs
コードをたどると、問題の原因となった次のコード行が見つかりました。
もう 1 つの奇妙な点は、上向き矢印を押して履歴を取得すると、コンソールが出力され^[[A
、他に何も起こらないことです。
誰にもアイデアはありますか?
更新:関連するソースコードを追加
- 着信 telnet 接続を受け入れるコード:
ConsoleReader
を作成してコマンドをディスパッチするコード:
更新 2
すいません、いつの間にか消えてました。私のプロジェクトが私に新鮮な空気を吹き込んでくれるので、戻ってきてください。だからここに何が起こったのですか:私は作成し、問題PrintWriter
の回避策としてそれを使用しました:^J
jline2
ただし、 を telnet セッションと一緒に使用すると、他にも多くの問題があります。
- タイプ
<TAB>
は、完全なリストをアクティブにする代わりにタブを表示します。ただし、Enter キーを押すと、完全なリストとエラー メッセージが表示されます。 - 矢印
<UP>
を入力して を表示し^[[A
、Enter キーを押すと、最後のコマンドが実行されます。ただし、コマンドライン編集を失いました
問題はまだ残っており、ガイドが必要なだけで解決する方法があるはずだと思います...