Java 完成时带有转义字符的jline问题
我正在处理一个使用java的jline version3的项目,但在完成时,我需要使用“else if”,但它将\作为转义字符放在转义空间中,并且我没有任何转义字符。我尝试了Java 完成时带有转义字符的jline问题,java,jline,jline3,Java,Jline,Jline3,我正在处理一个使用java的jline version3的项目,但在完成时,我需要使用“else if”,但它将\作为转义字符放在转义空间中,并且我没有任何转义字符。我尝试了null而不是char[],但它因空指针异常而崩溃 还有,我查过了 错误是: at org.jline.reader.impl.DefaultParser$ArgumentList.escape(DefaultParser.java:383) at org.jline.reader.impl.
null
而不是char[]
,但它因空指针异常而崩溃
还有,我查过了
错误是:
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)
我假设您使用的是JLine内置的completer
StringsCompleter
和DefaultParser
如果您有具有空格字符的完成候选项,则
defaultParser.escapeChars!=空
或defaultParser.escapeChars==null
,则将引用完成候选项StringsCompleter
的工作原理。
请参阅方法:escapeCharsNull()
和escapeChars()
NPE在提交中是固定的。您应该使用JLine版本3.10或更高版本。谢谢,但我使用的是RegexCompleter,当我将转义字符设置为null时,程序崩溃,问题中添加了异常,您可以看到NPE中的REPLReader.java在提交中得到修复。您应该使用JLine 3.10版或更高版本。在RegexCompleter中,您使用的是StringsCompleter。所以在完成时,空格被转义,或者候选者将被引用(如果escapeChars=null),我已经创建了一个票证。修复程序将包含在下一个版本中。感谢您的回答,但另一个问题是,我是否需要同时删除引号和字符转义,因为
否则如果无法被引用,那么当您将解析器转义chars
设置为空字符数组时,JLine的下一个版本将按照您的要求工作。