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

似乎ConsoleReader'sreadCharacter();没有回声,而是readLine()readLine(String prompt)

查看它显式调用(私有)clearEcho() 的(容易获得的)方法源,console.readCharacter()该方法通过向后移动指针来清除回声。

虽然文档有点薄,但由于 jLine 被设计为与 GNU readLine和 BSD editLine兼容,因此重点似乎是为处理提供控制台支持。

我假设提供了字符处理,但您将负责回显字符。

于 2012-12-02T20:58:11.200 回答