问题标签 [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.
java - 控制台应用程序中的 Java 键盘输入解析
我刚刚开始使用JLine来解析控制台模式下的字符输入。它似乎运作良好,但我想知道:
JLine 中是否有一种非阻塞方式来确定字符是否可用?(即像kbhit()
在 Windows 中一样。)
我想我总是可以将键盘输入包装在它自己的线程中,然后将线程安全队列中的键盘字符提供给主线程,但这似乎是不必要的。
编辑:这是逐个字符的解析。我不会使用 GUI。Java 中控制台模式下通常的 InputStream I/O 要求您先按 Enter 键(例如,它只是缓冲输入)。请不要告诉我在控制台模式下逐个字符输入在 Java 中是不可能的;不是。JLine 使用具有平台相关实现的可移植接口来实现。
编辑更新:我能够组合一个帮助类来在工作线程中执行阻塞 I/O(使用 JLine 进行每个字符的 I/O,警告:您必须自己解析 Ctrl-C!)然后进行通信通过带有 isempty() 例程的同步队列。对于我现在正在做的事情,这很好,但我真的很想知道在未来做这件事的好方法。
java - 用于 Java 的类 readline 库
您使用哪个类似 readline 的 Java 库?像库一样的“readline”是指用于编辑控制台输入的库,支持历史记录、制表符补全和类似的东西。我正在寻找一个,但我无法从这么多选择中进行选择(jLine -- unmaintained,java-readline -- last release on 2003,其他?)
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 开始一个项目。
java - jline 多参数解析
我正在尝试让 JLine 完成制表符,因此我可以输入如下内容:
我正在使用以下代码:
但是在我键入 value2 选项卡后,完成停止。
(补充问题,我可以使用 jline 将 value1 验证为日期吗?)
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 文件中包含的方法?
clojure - 有没有办法从另一个进程与 Clojure REPL 进程对话?
我想知道是否可以制作一个将表单发送到lein repl
启动的 REPL 会话的 Vim 插件。有没有办法将消息发送到现有的 jline.ConsoleRunner 进程?
scala - 如何取消 ConsoleReader.readLine()
首先,我正在学习 scala 和 Java 世界的新手。我想创建一个控制台并将此控制台作为可以启动和停止的服务运行。我能够将 ConsoleReader 运行到 Actor 中,但我不知道如何正确停止 ConsoleReader。这是代码:
我也在寻找有关此代码的任何建议!
java - 如何使用 JLine 在命令行上发出带有罢工效果的文本?
我正在将 JLine 用于控制台应用程序,并且我想发出带有删除线效果的文本。
JLine 可以做到这一点吗?我该怎么做?
是否存在任何特定于平台的问题?
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"
java - jline 在底部保持提示
我正在使用jline
,我有一个整洁的ConsoleReader
,一切都很好。但是,如果您在提示中键入内容并且在 stdout 上有输出(来自另一个线程),则输出会拆分您正在键入的单词/命令。
如何将jline
提示保留在终端底部?
我正在使用1,但如果它足够稳定jline
,我愿意使用2。jline