2012-06-15 2 views
0

Я использую библиотеку JLine для обработки ввода и вывода консоли.Библиотека JLine echo

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 для обработки ввода в консоль?

+1

Просто мысль, если вы «устали от поиска других [s]», то как активно и с энтузиазмом поддерживается jLine2, почему бы не внести свой вклад в это? Кубок кажется наполовину полным для меня. – earcam

ответ

2

JLine использует родной код на каждой платформе, на которой вы его запускаете. Некоторые терминалы на некоторых платформах не имеют правильных настроек для работы прямо из коробки.

Поведение по умолчанию различается между платформами из-за родных терминалов на этих платформах, но оно работает очень хорошо, как только вы его правильно настроите и настроите. Скорее всего, ваша проблема связана с настройками эмуляции терминала и не имеет ничего общего с JLine.

Это говорит о том, что у меня был большой успех на OSX (bash), Windows и RHEL/Centos (bash).

1

Кажется ConsoleReaderreadCharacter(); не эхо, но readLine() и readLine(String prompt) делаем.

Означает (легкодоступный) источник метода console.readCharacter(), который явно вызывает (private) clearEcho(), который очищает эхо, перемещая указатель назад.

Хотя документация немного тонкие, так как jLine разработан, чтобы быть совместимым с GNU Readline и BSD editLine акцент, похоже, на оказание поддержки консоли для линии обработки.

Я бы предположил, что обработка символов предоставлена, но вы несете ответственность за эхо-символ.