【问题标题】:Is there a library to parse java command line options into an associative array?是否有将 java 命令行选项解析为关联数组的库?
【发布时间】:2011-09-28 21:15:01
【问题描述】:

我需要一个库,它可以采用java -jar --aaa=a --bbb=b ---ccc=c 形式的命令行选项并返回一个数组,其值可以通过argsArray['aaa'], argsArray['bbb'] 等方式访问。

是否有一些带有示例的库来执行此操作?

【问题讨论】:

  • “我不太懂 Java,但我需要它快点。” -1 所以雇人(付给他们最高价以反映你的紧迫性)并停止打扰别人公共论坛会回答如果他们愿意,何时他们准备好了。
  • @Andrew_Thompson 我的问题是是否存在一个库,它可以满足我开箱即用的需求,并带有一些示例代码。任何知道答案的人只需要指出我。我正在编写的程序根本不使用任何 Java,只需要几行代码就可以使用基于 Java 的库。
  • @davogotland 我不熟悉 stackoverflow 的礼仪,但如果答案不正是您所寻求的呢?例如查看相关问题,此链接 stackoverflow.com/questions/3259143/…docjar.com/docs/api/org/apache/tools/ant/types/… 更接近匹配。我不是不欣赏这里的最佳答案,但是当可能存在更好的答案时,我会接受答案吗?我是一个完全的 Java 新手,但存在更接近的解决方案,也许编辑问题?
  • @vfclists:我的回答回答了你的问题。您请求了一个库和示例代码;我已经为你提供了两者。不仅如此,Commons CLI 也是为此的基准库。你还需要什么?

标签: java command-line-arguments associative-array


【解决方案1】:

Apache Commons CLI 是 Java 中一个很好的命令行选项解析器。

选项可以有或没有参数,可以是可选的或必需的,您可以为每个选项设置描述以获取使用帮助。一个简单的示例用法:

public static void main(String[] args) {

   Options options = new Options();

   try {
      options.addOption(OptionBuilder.withArgName("help").hasArgs(0).withDescription("Prints this help message.").isRequired(false).create("h"));
      options.addOption(OptionBuilder.withArgName("debug logging").hasArgs(0).withDescription("Enable debug logging").isRequired(false).create("1"));

      CommandLineParser parser = new PosixParser();
      CommandLine cmd = parser.parse(options, args);

      if (cmd.hasOption("h")) {
         new HelpFormatter().printHelp(400, "load_page_spool.sh", "OPTIONS", options, "Loads crawl data from pages pool, updating FRONTIER, HISTORY and PageTable", true);
         return;
      }

      ....

   } catch (MissingOptionException e) {
       HelpFormatter formatter = new HelpFormatter();
       formatter.printHelp("LoadPageSpool", options);
   }


}

【讨论】:

  • 我将这个问题读作询问一个库,该库仅解析那里的内容并返回一个数据结构而不说明您要查找的名称/符号。如果此库这样做,则示例不会显示它。几乎每种语言都有显示的功能,但找到所需的功能似乎要困难得多。
【解决方案2】:

试试Apache Commons CLI

另一个简单的解决方案可能是this article 中提供的帮助器类。

【讨论】:

    【解决方案3】:

    如果您按特定顺序保存它们,则可以从作为 main 方法参数的字符串数组访问它们。

    http://download.oracle.com/javase/tutorial/essential/environment/cmdLineArgs.html

    【讨论】:

      【解决方案4】:

      解析命令行的另一个选项是jcommander。我自己没有使用过,但是网站上的示例看起来不错且易于使用。

      【讨论】:

        猜你喜欢
        • 2012-11-16
        • 1970-01-01
        • 2017-05-16
        • 2020-12-09
        • 1970-01-01
        • 1970-01-01
        • 2015-02-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多