Ищите обходной путь ввода JShell

Я пробую новую программу JShell с java9 jdk. Я хочу отладить интерактивное консольное приложение, которое я делаю, но похоже System.in не работает Например:

[root@mycomputer home]# jdk-9/bin/jshell 
|  Welcome to JShell -- Version 9-ea
|  Type /help for help

-> new Scanner(System.in).next()
 

Он просто зависает и полностью блокирует клавиатуру. Я должен убить процесс в другом терминале, чтобы вернуть мой запрос.

Как указывает Michael Lloyd Lee mlk, похоже, что это известная ошибка. Кто-нибудь нашел обходной путь?


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

2 ответа

Это была ошибка, и она была исправлена ​​(до выпуска JDK 9).

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

Единственный обходной путь, который я нашел, - это присвоение "ввода" строке и использование 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=\QNaN\E][infinity string=\Q∞\E]

-> sc.next()
|  Expression value is: "Hello"
|    assigned to temporary variable $5 of type String
Другие вопросы по тегам