问题标签 [jline2]
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 - jline2 在 telnet 控制台上打印“\n”时打印“^J”
我将JLine 2 (v2.13) 与 Socket IO 结合使用,为我的应用程序创建一个管理控制台,可以通过普通的 telnet 客户端进行访问。但是我发现它应该打印出换行符时会打印出奇怪的符号:
正确的输出应该是:
我追溯了代码,发现了导致问题的以下代码行:
另一个奇怪的事情是,当我按向上箭头获取历史记录时,控制台打印出来^[[A
,没有其他任何反应。
有人有什么主意吗?
更新:添加了相关的源代码
- 接受传入 telnet 连接的代码:
- 创建
ConsoleReader
和调度命令的代码:
更新 2
对不起,我消失了一段时间。回来吧,因为我的项目让我呼吸到了新鲜空气。所以这就是发生的事情:我创建了一个PrintWriter
并将其用作该^J
问题的解决方法:
jline2
但是,与 telnet 会话一起使用时还有许多其他问题:
问题仍然存在,我相信应该有办法解决它只需要一些指导......
java - 带有自己提示符的 Java 命令行应用程序
我正在编写一个 JAVA 控制台应用程序。用户启动 jar 后,他应该得到一个类似于 Linux shell 的命令行,他可以在其中输入命令。这是我以前从未编程过的东西。通常我正在编写 GUI,或者我用一些已解析的参数启动 jar。
基本上我有2个问题:
- 是否有第三方库可以帮助从命令行读取用户输入并解析命令并生成提示?解析在我通常由 Apache Commons CLI 使用的主类中传递的参数。它在这里也使用完整还是有更好的方法?
是否有提供“无限输入”的最佳实践?我发现的所有解决方案都有 10 年或更长时间,例如:
这仍然是最佳做法还是今天有更好的方法?
java - 是否可以用 Java 识别 Jline2 中的 Double Tab 按键
我正在使用 Jline2 和 Java 1.7 生成 CLI 接口。我需要在我的控制台阅读器中捕获双标签按键。有可能吗,如果可以,请告诉我如何实施。
java - 使用带有 java 的 Jline 2.14 未检测/打印第一个字符
上面的代码在命令提示符下运行时没有检测到输入的第一个字符。以上逻辑用于检测Jline2.14控制台Reader中的Double Tab按键
java - 带有 jLine 的 Java 控制台应用程序
我有一个多线程 Java 控制台应用程序。其中一个线程正在读取用户的输入,而其他线程将一些数据打印到控制台。当用户键入输入时编写器线程打印某些内容时,就会出现问题。它打断了用户。
我在输出的开头写了“\r”以清除该行以获得更好的外观。但是,我还想将用户在那一刻之前输入的内容打印到下一行。
例如,我想输入 123456 作为输入。但是当我输入 123 时,
作家线程打印“输出”。
我想显示我之前输入的内容(“123”),然后我将输入剩余的输入。
有人建议我使用 jLine。但我无法实现。您能否通过提供 jLine 库的示例用法或建议替代解决方案来帮助我?
重要的是不要阻塞编写器线程。它必须在输出到达时打印输出。
java - 使用 JLine2 仅显示几秒钟的字符串
我正在使用JLine 2用 Java编写控制台应用程序。我需要在控制台上显示密码 10 秒,然后将其删除(在 GNU 终端上)。
我尝试了不同的东西,其中:
但没有运气。文本不显示,或者文本未清除。
jsch - 带有 JLine3 和 JSch 客户端的 Java SSH 服务器
我正在尝试使用 apache sshd-core 将基于 Java 的 SSH 服务器从使用 jline2 迁移到 jline3 并使用 JSch 客户端连接和执行 shell 命令。使用 jline2,一切正常。
使用 jline3,它在 OSX 中通过 SSH 客户端执行命令时工作得很好。但是,我似乎无法让它与 JSch 一起使用。
在下面附加堆栈跟踪:
示例项目可以在github上找到
提前致谢。
java - 我怎样才能让 JShell 停止在自己身上换行?
我在Windows 7上使用JDK 9 build 179 。我有我的Windows 7命令外壳的“屏幕缓冲区大小宽度”属性,设置为一个很大的数字,因为这是我滚动的方式。正常工作;当我只是单独使用Windows shell 时。
不幸的是,当我使用JShell时,我的“屏幕缓冲区大小宽度”属性被忽略,并且JShell将我的长线包裹在自己身上。当换行时,它不会创建新行。相反,光标会翻倍回到同一行的开头并覆盖该行中的字符。
它似乎使用窗口实际宽度的最右边尺寸作为换行的提示;忽略“屏幕缓冲区大小宽度”属性。该属性在生活中的唯一目的是明确防止换行并允许最多 9999 个字符的长行。
自JDK 9 ea+166以来,我已经忍受了这种烦人的废话。我耐心地等了几个月;期望它会在JDK 9的一般发布时得到修复。没有这样的运气。
拜托,谁能告诉我如何解决这个问题的秘密?
提前致谢。
java - Jline 输入被 System out 中断
我在使用 Jline 时遇到了一些问题,并且不太了解如何正确工作,从示例中一切似乎都可以正常工作,但是当我尝试将它移到我的控制台应用程序中时,事情变得很奇怪。
我遇到了两个问题:
当您将输入写入控制台,而其他东西正在通过 System out 记录消息时,写入的输入会被破坏。(查看:https ://i.imgur.com/ZAJDjTI.png )
我试图将命令同步到主线程,因为阅读器线程将被阻塞,但这次你会发现这会导致输出文本接管命令输入空间。((绿色文字为输入,白色为输出)查看:https ://i.imgur.com/CdKiIYy.png )
我期望的输出是来自控制台底部的输入不受控制台输出的影响,在底部留下一个平滑的输入文本层。(查看:https ://i.imgur.com/HfH5l8U.png?1 )
这是我编写的一个示例类,用于演示我遇到的两个问题:
有什么解决办法吗?