Автозаполнение JLine не отображается и выполняется onComplete после нажатия enter

#java #log4j #jline

#java #log4j #jline

Вопрос:

По какой-то причине мой многопоточный сервер netty не будет работать с автозаполнением в Windows, если быть точным (в моем первоначальном тестировании linux работал нормально) Я обнаружил, что приложение terminal console и jansi являются «решениями», которыми они были для многих проблем, кроме этой. Странная часть в этом заключается в том, что мой клиент запускает ту же функцию кода для вызова LineReader.readLine(«> «); отлично работает с автозаполнением почти с тем же кодом. Я понятия не имею, в чем проблема, потому что они оба вызывают один и тот же код в одном и том же порядке с одинаковыми зависимостями (за исключением некоторых зависимостей на стороне сервера)

Источник по адресу: https://github.com/Fernthedev/light-chat

Сервер прочитал код: https://github.com/Fernthedev/light-chat/blob/master/java/server/src/main/java/com/github/fernthedev/server/ServerCommandHandler.java

Клиент прочитал код: https://github.com/Fernthedev/light-chat/blob/master/java/client/src/main/java/com/github/fernthedev/client/WaitForCommand.java

StaticHandler (используется для чтения и настройки терминала и считывателя): https://github.com/Fernthedev/light-chat/blob/master/java/universalChat/src/main/java/com/github/fernthedev/universal/StaticHandler.java

И сервер, и клиент имеют основной класс с методом main(String[] args)

Комментарии:

1. Какую ошибку вы получаете?

2. Нет ошибки, вот в чем проблема. Он просто вставляет пробел табуляции, и если я нажимаю enter, он не отображает автозаполнение, а readLine(); обрабатывает автозаполнение, как если бы я его выбрал.

Ответ №1:

Я сузил проблему, заставляя TerminalConsoleAppender создавать немой терминал, поэтому я отключил это, а затем полностью затенял jline и jline-terminal-jansi и работал отлично.