これが私のコードです。
ConsoleReader console = new ConsoleReader();
Completer quit = new StringsCompleter("quit");
Completer subcommands = new ArgumentCompleter(new StringsCompleter("with-number"), new StringsCompleter("with-string"));
Completer add = new ArgumentCompleter(new StringsCompleter("add"), subcommands);
Completer delete = new ArgumentCompleter(new StringsCompleter("delete"), subcommands);
Completer operations = new ArgumentCompleter(add, delete);
Completer aggregated = new AggregateCompleter(new StringsCompleter("run"), quit, operations);
console.addCompleter(aggregated);
コマンドを完了しようとすると、このエラーが発生します。
Exception in thread "main" java.lang.NullPointerException
at jline.console.completer.ArgumentCompleter$AbstractArgumentDelimiter.delimit(ArgumentCompleter.java:283)
at jline.console.completer.ArgumentCompleter.complete(ArgumentCompleter.java:116)
at jline.console.completer.ArgumentCompleter.complete(ArgumentCompleter.java:152)
at jline.console.completer.AggregateCompleter$Completion.complete(AggregateCompleter.java:121)
at jline.console.completer.AggregateCompleter.complete(AggregateCompleter.java:80)
at jline.console.ConsoleReader.complete(ConsoleReader.java:3261)
at jline.console.ConsoleReader.readLine(ConsoleReader.java:2621)
at jline.console.ConsoleReader.readLine(ConsoleReader.java:2269)
at com.test.jline.JLineExample.main(JLineExample.java:41)
コードの予期される動作:
> run [TAB]
add delete
> run del[TAB]ete [TAB]
with-number with-string
そのような動作を実現するためにコードを修正するにはどうすればよいですか?
PS
私は使用しますJLine 2.12
。