web-dev-qa-db-ja.com

Javaコンソールが矢印キーを認識しない

Java 10.04サーバー上のコンソール)でいくつかの奇妙な問題があります(実際にはminecraft-serverのコンソールですが、これは一般的な問題であり、minecraft固有の問題ではないと思います):矢印キーはありません正しく認識されません。Javaコンソール内で使用される場合は常に、次のようになります。

^[[A ^[[B ^[[C ^[[D

ただし、残りのシステムでは問題なく機能します。

私はすでにシステムロケールのチェックやJavaのみの特定のロケールの設定などのいくつかのことを試しましたが、運がありません。アイデアの背後にある理由とそれを修正する方法はありますか?

前もって感謝します。

編集(10月29日):最初の回答を読み、いくつかのことをテストした後、この問題についてさらに理解しました。現在、シェルの上でプログラムが実行されています。この問題は、主にJavaアプリケーション(またはそのコンソール、より具体的には))によって使用されるJavaのjlineライブラリの問題が原因です。

テストのために、OpenJDK6からOrcaleJDK6に切り替えたところ、問題は解決しました。 10.04にはバージョンがないため、OpenJDK7をテストすることはできません。これはコンソールの入出力の処理を担当するライブラリであるため、jlineとのいくつかの接続を想定しています。おそらく、アプリケーションで使用されているバージョンは、サーバーで使用されている古いOpenJDKバージョンと何らかの形で互換性がありません。ただし、手動でインストールしたOracle-Javaの最新バージョンと互換性があります。 ubuntuのjline-packageがこの図にどのように適合するかはまだわかりません。私にとっては、テストの有無にかかわらず、テストに違いはありません。

私が何かを見つけたら、この投稿をもう一度編集します。アイデアがあれば教えてください。

4
thee

一部のコンソールプログラム(shなど、bashの上部で実行されているプログラムである可能性があります)は、Upなどのコントロールキーの押下を抑制しません。  矢印または下  矢印など。これらのコンソールでは、投稿したようにキーを押したときのエコーが表示されます^[[A ^[[B ^[[C ^[[D。それは実際には大きな問題ではありません。

デフォルトのシェルはbashで、矢印キーのキーストロークを抑制します。 bashとは異なり、shシェルは矢印キーのストロークを抑制しません。ターミナルでshを実行し、矢印キーを押すことで、それを試すことができます。これらのコンソールを終了するには、プログラム固有の特定のコマンドを使用する必要があります。ほとんどの場合、それはquitまたはexitです。 Minecraftサーバーの場合、stopになります。

1
Anwar