【问题标题】:Argument option using JCommander使用 JCommander 的参数选项
【发布时间】:2014-08-25 13:17:32
【问题描述】:

我是 JCommander 的新手,我正在尝试在我的 JAVA 命令行应用程序中使用它。

我做的第一件事是创建了我的CommandLineArguments 类。

现在,我正在尝试在命令行中打印带有参数的选项。但我想我错过了一些东西。

这是我的主要课程:

public static void main(String[] args) {


    String[] argv={"-h","host"};
    CommandLineArguments arguments=new CommandLineArguments();
    JCommander commands= new JCommander(arguments);

    try {

        commands.parse(argv);

        System.out.println(commands.getParsedCommand());


    } catch (Exception e) {
        System.out.println(e.getMessage());
        commands.usage();
    }
}

一旦我运行这个类,我得到:null 作为输出。似乎 getParsedCommand() 没有按应有的方式使用。

谁能告诉我如何正确使用JCOmmmander 方法,以便我可以看到带有参数的选项?

我在这里要做的是,一旦用户运行java -jar myApp.jar -port portNumber -h hostname -d database -c collection,我希望能够获取 portNumber 主机名数据库和集合值,以便建立连接并发送查询。

希望我已经足够清楚了。

伊斯梅尔

【问题讨论】:

    标签: java command-line-arguments jcommander


    【解决方案1】:

    您需要区分commandsparameters。在您给出的示例中,您只需要参数。

    first chapter of the JCommander documentation 提供了一个足够清晰的示例来说明如何处理参数。如果您的CommandLineArguments 类如示例中那样注释,则应在调用parse(argv) 后在该类中正确设置参数值。

    命令在a later chapter dealing with more complex command-line syntaxes中解释。

    【讨论】:

    • 文档中并不清楚。在给定的示例中:Assert.assertEquals(jct.verbose.intValue(), 2); 我们知道该值为2。当我们使用终端并且我们不知道给定的值时,我们如何获取值?
    • 对不起,我不明白你的困惑。只需致电jct.verbose.intValue() 即可为您带来价值。将您的 CommandLineArguments 课程添加到问题中,它可能会给您一个更好的答案。
    • 好的,你刚刚回答了我的问题。谢谢
    • 是的,我做到了。好吧,当你告诉我:“只要打电话给jct.verbose.intValue() 就会给你带来价值”这就是我正在寻找的答案。
    猜你喜欢
    • 1970-01-01
    • 2014-08-12
    • 2015-10-16
    • 1970-01-01
    • 2017-11-28
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 2020-08-09
    相关资源
    最近更新 更多