寻找 JShell 输入解决方法



我正在用java9 jdk尝试新的JShell程序。我想调试我正在制作的交互式控制台应用程序,但似乎System.in不起作用。例如:

[root@mycomputer home]# jdk-9/bin/jshell 
|  Welcome to JShell -- Version 9-ea
|  Type /help for help
-> new Scanner(System.in).next()
 

它只是冻结在这里并完全锁定键盘。我必须在另一个终端中终止该进程才能恢复我的提示。

正如 mlk 指出的那样,这似乎是一个已知的错误。有没有人找到解决方法?


My specs: Redhat x86_64, Gnome-Terminal, Java9 Build 109 

我找到的唯一解决方法是将"input"分配给字符串,并使用接受字符串Scanner 的构造函数:

public Scanner(String source)

构建一个新的Scanner,该产生 从指定字符串扫描的值。


-> String input = "Hello world"
|  Added variable input of type String with initial value "Hello world"
-> Scanner sc = new Scanner(input)
|  Modified variable sc of type Scanner with initial value java.util.Scanner[delimiters=p{javaWhitespace}+][position=0][match valid=false][need input=false][source closed=false][skipped=false][group separator=,][decimal separator=.][positive prefix=][negative prefix=Q-E][positive suffix=][negative suffix=][NaN string=QNaNE][infinity string=Q∞E]
-> sc.next()
|  Expression value is: "Hello"
|    assigned to temporary variable $5 of type String
这是一个

错误,它已被修复(在JDK 9发布之前)。

jshell> new Scanner(System.in).next()
r
$1 ==> "r"

最新更新