【问题标题】:How do I make command line arguments run with either, neither, or both arguments? - Java如何使命令行参数与其中一个、两个或两个参数一起运行? - 爪哇
【发布时间】:2014-09-19 23:57:23
【问题描述】:

我正在制作一个 selenium webdriver,我有 25 个应用程序和 4 个环境。我将它们设置为枚举,因此我可以提供特定的命令行参数。现在我让它工作了,所以它需要一个应用程序,然后是一个环境。我需要能够做类似的事情

-app app1 app2 app3 -env env1 env2

我需要它要么不带参数,要么不带参数,要么带两个参数。这是我目前所拥有的。

if (args.length == 0)
{
    LogIn.loginTest(testResults);
    DatabaseTest.testResults(testResults);
    LinkTest.linkTests(testResults);
}
else 
{
    // First choose application, then choose environment
    Application.chooseAppTest(args);
}

【问题讨论】:

  • 这个问题与Selenium无关!您只是在寻找一种方法来解析传递给 Java 应用程序的参数。

标签: java command-line-arguments


【解决方案1】:

考虑使用库来评估您的命令行参数,例如JOptSimple。他们在website 上提供了一组很好的示例,您不必重新发明轮子。根据文档(尚未尝试过),采用您的示例,以下应该可以工作:

OptionParser parser = new OptionParser("app:env:");
OptionSet options = parser.parse("-app", "app1", "app2", "app3", "-env", "env1", "env2");

options.valuesOf("app") 然后应该返回“app1”、“app2”和“app3”的列表。

【讨论】:

    【解决方案2】:

    不给你写代码,给个建议:

    • 循环遍历 args 数组的所有参数。
    • 确保第一个等于 -app 或 -env
    • 将数组中第二个字符串的所有参数收集到一个列表中,直到找到 -app 或 -env
    • 将第二个 -app/-env 之后的所有参数收集到另一个列表中
    • 不允许 -app 或 --env 出现两次
    • 现在您将有两个列表,一个用于应用程序,另一个用于环境(尽管它们可以为空)

    【讨论】:

      猜你喜欢
      • 2012-01-28
      • 2021-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多