如何在执行jar时给出参数值?

时间:2016-09-23 08:03:34

标签: java jar executable-jar

我的主要课程中有两个输入参数,例如:

  public static void main(String[] args) throws IOException, JSONException, ParseException {

    DataFromES df = new DataFromES();
    String year = "";
    String[] month = {""};

    for (String m : month) {
        df.receiveData(year,m);

    }

    System.out.println("Excel Generated");
}

我已经为我的项目生成了jar。但是,我非常不确定如何在jar执行时将值传递给CMD。我已经知道如何将参数传递给jar,但后来不清楚如何将值传递给上面两个Strings

3 个答案:

答案 0 :(得分:2)

在main()方法中,您需要声明2个变量:

public static void main(String[] args) {
    String year = args[0];
    String month = args[1];

    .... your treatment ...
}

所以,将年份作为第一个参数,将月份作为第二个参数;)

答案 1 :(得分:1)

您可以使用java命令将参数传递给args,如下所示:

java -cp jar-name.jar complete-class-name "2016" "08"

你的代码就像这样:

String year = args[0];
String month = args[1];

答案 2 :(得分:1)

为避免重新发明轮子和错误,您应该考虑使用像Character Code Tables for TM printers这样的库,它会为您正确地解析命令。

-y

然后,您可以在一年中使用--year-m提供论据,并在月份的情况下使用--monthpublic static void main(final String[] args) { if (args.length < 2) throw new IllegalStateException("Not enough arguments"); String year = args[0]; String[] months = new String[args.length - 1]; System.arraycopy(args, 1, months, 0, months.length); ... } 。如果出现解析错误,也会打印用法。

如果你想手动完成(假设你的年份首先跟着几个月),那么你的代码就是:

{{1}}

但我们应该添加更多测试以确保参数总量正确且参数有效,这就是我建议使用库的原因。