您可以在此处找到代码示例。 链接到我的 GitHub 项目
在文件 Driver.java 中,可以看到我指定了一个独占的 ArgGroup。我根据文档的理解是默认的多重性是 0..1。文档指出,“默认值为 multiplicity = "0..1",这意味着默认情况下可以省略或指定一个组”。
我也尝试将多重性显式设置为 0..1 但这并没有改变行为。在没有 -al 或 -rl 选项的情况下运行程序,解析会引发 NullPointerException。该框架的行为就像需要其中一个选项一样。这与文档不一致。如果我愿意,我应该可以只使用 -n 选项来运行这个程序。我希望 ArgGroup 完全是可选的。
git hub 链接上的程序是一个功能齐全的 maven 项目,可以克隆、构建和运行。然而,这里是堆栈跟踪。没有指定参数或没有 arg 组。我希望完全没有参数可以打印使用信息。此外,该组的默认多重性应该是 0..1,所以我不应该指定 arg 组中的选项之一。
java.lang.NullPointerException
at com.shawnfox.java4.concurrency.Driver.call(Driver.java:58)
at com.shawnfox.java4.concurrency.Driver.call(Driver.java:1)
at picocli.CommandLine.executeUserObject(CommandLine.java:1743)
at picocli.CommandLine.access$900(CommandLine.java:145)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2101)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2068)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:1935)
at picocli.CommandLine.execute(CommandLine.java:1864)
at com.shawnfox.java4.concurrency.Driver.main(Driver.java:50)