Java 控制台无法识别箭头键

the*_*hee 5 server 10.04 command-line java console

我的 10.04 服务器上的 java 控制台有一些奇怪的问题(它实际上是 Minecraft 服务器的控制台,但我相信这是一个普遍问题,而不是 Minecraft 特定的问题):箭头键无法正确识别。每当它们在 java 控制台中使用时,它们都会生成如下内容:

^[[A ^[[B ^[[C ^[[D
Run Code Online (Sandbox Code Playgroud)

不过,它们在系统的其余部分上运行良好。

我已经尝试过一些事情,例如检查系统区域设置或仅为 java 设置特定区域设置,但没有任何运气。任何想法背后的原因是什么以及如何解决它?

提前致谢。

编辑(10 月 29 日): 在阅读第一个答案并测试了几件事后,我对这个问题有了更多的了解。现在有程序在 shell 之上运行,问题主要是由 java 应用程序(或更具体地说,它的控制台)使用的 java jline 库的问题引起的。

出于测试目的,我从 OpenJDK6 切换到 OrcaleJDK6,问题就消失了。无法测试 OpenJDK7,因为没有 10.04 的版本。我假设与 jline 有一些连接,因为这是负责处理控制台输出和输入的库。应用程序使用的版本可能与服务器上使用的旧 OpenJDK 版本不兼容。但与我手动安装的最新版本的oracle-java兼容。我仍然没有弄清楚 ubuntu 的 jline-package 如何适应这张图片。对我来说,使用和不使用它进行测试没有区别。

如果我弄清楚了什么,我会再次编辑这篇文章。如果有人有想法,请告诉我。

Anw*_*war 1

一些控制台程序(可能是在 bash 顶部运行的程序,例如sh)不会抑制控制键按下,例如向上\xe2\x86\x91箭头或向下\xe2\x86\x93箭头等。在这些控制台中,您还会得到按键的回声就像你发布的那样^[[A ^[[B ^[[C ^[[D。其实这不是什么大问题。

\n\n

您的默认 shell 会bash抑制箭头键的击键。与 bash 不同,shshell 不会抑制箭头键敲击。sh您可以通过在终端上运行并按箭头键来尝试。要退出这些控制台,您需要使用特定于程序的某些命令,大多数时候,它是quitexit。对于您的 Minecraft 服务器来说,它将是stop.

\n\n\n