是否有一个库将java命令行选项解析为关联数组?

时间:2011-07-05 14:29:31

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

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

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

4 个答案:

答案 0 :(得分:4)

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

选项可以包含或不包含参数,可以是可选的或必需的,您可以为每个参数设置说明以获取使用帮助。一个简短的示例用法:

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);
   }


}

答案 1 :(得分:0)

尝试Apache Commons CLI

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

解析命令行的另一个选项是jcommander。我自己没有使用它,但网站上的例子看起来很好用,也很容易使用。