Java 完成时带有转义字符的jline问题

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.

我正在处理一个使用java的jline version3的项目,但在完成时,我需要使用“else if”,但它将\作为转义字符放在转义空间中,并且我没有任何转义字符。我尝试了
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的下一个版本将按照您的要求工作。