问题标签 [jline]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
11407 浏览

java - 控制台应用程序中的 Java 键盘输入解析

我刚刚开始使用JLine来解析控制台模式下的字符输入。它似乎运作良好,但我想知道:

JLine 中是否有一种非阻塞方式来确定字符是否可用?(即像kbhit()在 Windows 中一样。)

我想我总是可以将键盘输入包装在它自己的线程中,然后将线程安全队列中的键盘字符提供给主线程,但这似乎是不必要的。

编辑:这是逐个字符的解析。我不会使用 GUI。Java 中控制台模式下通常的 InputStream I/O 要求您先按 Enter 键(例如,它只是缓冲输入)。请不要告诉我在控制台模式下逐个字符输入在 Java 中是不可能的;不是。JLine 使用具有平台相关实现的可移植接口来实现。

编辑更新:我能够组合一个帮助类来在工作线程中执行阻塞 I/O(使用 JLine 进行每个字符的 I/O,警告:您必须自己解析 Ctrl-C!)然后进行通信通过带有 isempty() 例程的同步队列。对于我现在正在做的事情,这很好,但我真的很想知道在未来做这件事的好方法。

0 投票
2 回答
2997 浏览

java - 用于 Java 的类 readline 库

您使用哪个类似 readline 的 Java 库?像库一样的“readline”是指用于编辑控制台输入的库,支持历史记录、制表符补全和类似的东西。我正在寻找一个,但我无法从这么多选择中进行选择(jLine -- unmaintained,java-readline -- last release on 2003,其他?)

0 投票
4 回答
3136 浏览

clojure - clojure/lein REPL 与 jline

出于某种原因,我无法让 clojure REPL 与 jline 一起使用,我所做的是从 github 上 git clone clojure 存储库,然后运行 ​​ant 来构建它,然后我将 jline-0.9.94.jar 下载到带有 clojure.jar 的目录中,然后运行以下命令:

并得到以下错误:

以下是我当前目录中的文件:

我在 clojure 1.1 和 lein repl 上遇到了同样的错误(似乎 lein 维护了自己的 clojure 版本)。

顺便说一句,这是在 mac ox 10.5.8 上

有人知道出了什么问题以及如何解决吗?因为我真的想让 lein repl 开始一个项目。

0 投票
3 回答
2252 浏览

java - jline 多参数解析

我正在尝试让 JLine 完成制表符,因此我可以输入如下内容:

我正在使用以下代码:

但是在我键入 value2 选项卡后,完成停止。

(补充问题,我可以使用 jline 将 value1 验证为日期吗?)

0 投票
3 回答
1071 浏览

java - 为什么对于同一个 jar 文件,我的 javap 输出与您的不同?

我在编译对 jline-0.9.94 具有 maven 依赖性的代码时遇到问题。具体来说,我正在使用其默认 Ant 目标编译Groovy 1.7.6并收到以下错误:

jline 依赖项已正确解析,但奇怪的是,jar 中似乎没有 setDefaultPrompt 方法:

(javap 输出中也缺少其他方法,但 setDefaultPrompt 是破坏我构建的方法。)

我尝试从本地 maven 存储库中清除 jline 并再次尝试,但无济于事。我还检查了来自Maven Central的 jline jarfile以及具有相同结果的镜像。

奇怪的是,我可以将 jar 文件复制到另一台机器(Sun)并执行完全相同的步骤,并且我可以按预期在 jar 文件中看到 setDefaultPrompt 方法。其他人也成功地在 Mac 上执行了相同的步骤。

我的机器上会发生什么会阻止 Java 工具链查看 jar 文件中包含的方法?

0 投票
3 回答
854 浏览

clojure - 有没有办法从另一个进程与 Clojure REPL 进程对话?

我想知道是否可以制作一个将表单发送到lein repl启动的 REPL 会话的 Vim 插件。有没有办法将消息发送到现有的 jline.ConsoleRunner 进程?

0 投票
3 回答
3281 浏览

scala - 如何取消 ConsoleReader.readLine()

首先,我正在学习 scala 和 Java 世界的新手。我想创建一个控制台并将此控制台作为可以启动和停止的服务运行。我能够将 ConsoleReader 运行到 Actor 中,但我不知道如何正确停止 ConsoleReader。这是代码:

我也在寻找有关此代码的任何建议!

0 投票
1 回答
551 浏览

java - 如何使用 JLine 在命令行上发出带有罢工效果的文本?

我正在将 JLine 用于控制台应用程序,并且我想发出带有删除线效果的文本。

JLine 可以做到这一点吗?我该怎么做?

是否存在任何特定于平台的问题?

0 投票
2 回答
1287 浏览

clojure - 带有缓冲区编辑器的 Clojure 标准 REPL?

我不是在寻找 IDE 或集成的 REPL。我只是想问一下是否有人知道是否可以在 REPL 中有一个缓冲区编辑器,就像从 'psql' 或某些 *nix shell 中知道的那样。

例如,在 psql 中,您只需输入“\e”,您将在 EDITOR 中获得最后一个命令,并在退出时执行它。

这对于 clojure repl 来说太棒了。

那么,有这样的功能吗?在 jline 中必须在哪里实施?

解决方案:

rlwrap 可以解决问题。

我必须编译 readline ftp://ftp.gnu.org/gnu/readline/然后 rlwrap http://utopia.knoware.nl/~hlub/rlwrap/#rlwrap

之后,我可以使用以下快捷方式启动编辑器。

Ctrl + ^

rlwrap -m -- java -cp clojure-1.3.0.jar clojure.main

为了在 Mac OSX 上使用 leiningen,我必须更改以下内容:

和出口RLWRAP_EDITOR

export RLWRAP_EDITOR="vim +%L"

0 投票
1 回答
2177 浏览

java - jline 在底部保持提示

我正在使用jline,我有一个整洁的ConsoleReader,一切都很好。但是,如果您在提示中键入内容并且在 stdout 上有输出(来自另一个线程),则输出会拆分您正在键入的单词/命令。

如何将jline提示保留在终端底部?

我正在使用1,但如果它足够稳定jline,我愿意使用2。jline