如何解析 Java 中的命令行参数?

新手上路,请多包涵

在 Java 中解析命令行参数的好方法是什么?

原文由 lindelof 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 514
2 个回答

检查这些:

或者自己动手:


例如, 这就是您使用 commons-cli 解析 2 个字符串参数的方式:

 import org.apache.commons.cli.*;

public class Main {

    public static void main(String[] args) throws Exception {

        Options options = new Options();

        Option input = new Option("i", "input", true, "input file path");
        input.setRequired(true);
        options.addOption(input);

        Option output = new Option("o", "output", true, "output file");
        output.setRequired(true);
        options.addOption(output);

        CommandLineParser parser = new DefaultParser();
        HelpFormatter formatter = new HelpFormatter();
        CommandLine cmd = null;//not a good practice, it serves it purpose

        try {
            cmd = parser.parse(options, args);
        } catch (ParseException e) {
            System.out.println(e.getMessage());
            formatter.printHelp("utility-name", options);

            System.exit(1);
        }

        String inputFilePath = cmd.getOptionValue("input");
        String outputFilePath = cmd.getOptionValue("output");

        System.out.println(inputFilePath);
        System.out.println(outputFilePath);

    }

}

从命令行使用:

 $> java -jar target/my-utility.jar -i asd
Missing required option: o

usage: utility-name
 -i,--input <arg>    input file path
 -o,--output <arg>   output file

原文由 Vinko Vrsalovic 发布,翻译遵循 CC BY-SA 4.0 许可协议

看看最近的 JCommander

我创造了它。我很高兴收到问题或功能请求。

原文由 Cedric Beust 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题