Ищите обходной путь ввода 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