我正在使用java中的jline version3处理一个项目,但在完成时,我需要有“tried”,但是它将\转义空间作为转义字符,并且我没有任何转义字符。我尝试了null而不是char[],但是它会崩溃,指针为空指针异常。
另外,我检查了https://github.com/jline/jline3/issues/173
错误是:
at org.jline.reader.impl.DefaultParser$ArgumentList.escape(DefaultParser.java:383)
at org.jline.reader.impl.LineReaderImpl$MenuSupport.update(LineReaderImpl.java:4403)
at org.jline.reader.impl.LineReaderImpl$MenuSupport.next(LineReaderImpl.java:4317)
at org.jline.reader.impl.LineReaderImpl.doMenu(LineReaderImpl.java:4471)
at org.jline.reader.impl.LineReaderImpl.doList(LineReaderImpl.java:4614)
at org.jline.reader.impl.LineReaderImpl.doComplete(LineReaderImpl.java:4149)
at org.jline.reader.impl.LineReaderImpl.expandOrComplete(LineReaderImpl.java:3875)
at org.jline.reader.impl.LineReaderImpl.readLine(LineReaderImpl.java:585)
at org.jline.reader.impl.LineReaderImpl.readLine(LineReaderImpl.java:443)
at REPLReader.readLine(REPLReader.java:99)
at Compiler.getInputCode(Compiler.java:24)
at CompilerMain.lex(CompilerMain.java:75)
at CompilerMain.compile(CompilerMain.java:15)
at Main.main(Main.java:59)发布于 2020-09-07 15:01:03
我假设您使用的是JLine、内置完成器、StringsCompleter和DefaultParser。
如果您有具有空格字符的完成候选项,则可以选择
defaultParser.escapeChars != null或defaultParser.escapeChars == null的话,完成考试的候选人将被引用。这就是StringsCompleter应该如何工作的。参见StringsCompleterTest.java方法:escapeCharsNull()和escapeChars()。
NPE在commit 68a9c1f中是固定的。您应该使用JLine版本3.10或更高版本。
https://stackoverflow.com/questions/63757353
复制相似问题