【发布时间】:2019-10-22 05:19:48
【问题描述】:
我正在使用 Pico CLI v4.0.0-alpha-3 和 jline v3。我有以下课程(使用注释)。当我运行主类时,我似乎无法运行命令并调用可调用对象。如果我只是传入参数,我可以调用可调用对象。
@CommandLine.Command(name = "Test CLI",
description = "CLI tool",
header = "%n@|green test cli |@",
footer = {"",
"@|cyan Press Ctrl-D to exit the CLI.|@",
""},
version = "1.0.0",
showDefaultValues = true,
optionListHeading = "@|bold %nOptions|@:%n",
subcommands = {
Sync.class,
Status.class
})
public class Tester implements Callable<Integer> {
private static final String PROMPT = "Test CLI> ";
private LineReaderImpl lineReader;
private PrintWriter out;
@Option(names = {"-u", "--username"}, required = true, description = "user name")
private String userName;
@Option(names = {"-p", "--password"}, required = true, description = "password")
private String password;
final Tester tester = new Tester();
final CommandLine cmd = prepareCommand(tester);
final int exitCode = cmd.execute(args);
当我运行 java 应用程序并运行带有参数的命令时,不会调用可调用对象。当我简单地传入参数时,可调用对象被调用。关于如何解决此问题的任何想法,以便 CLI 用户必须传入命令和参数。
【问题讨论】:
-
您能举例说明您是如何尝试调用该命令的吗?
-
@RemkoPopma 我添加了通话。当我运行 CLI 应用程序时,似乎只在我传入参数(例如 -u abc -p ab123)时才调用调用,而不是作为 Test CLI -u abc -p abc123
-
@RemkoPopma 我也尝试过使用此处引用的 jline v3 示例:github.com/remkop/picocli/tree/master/picocli-shell-jline3
-
现在明白了。稍后我会发布答案。
-
感谢您提出这个问题!我从来没有意识到,但这可能会让人很困惑。我将更新
picocli-shell-*模块的文档以更好地解释这一点。
标签: shell command-line-interface interactive picocli jline3