我想有一种动态方式将参数传递给java main方法调用,该方法通过命令行(cmd)传递给Runnable JAR文件。目前,我的main()方法接受了6个参数,并在调用传入了这些变量的另一个方法之前将每个参数设置为一个变量。
id是一种让用户能够将5个或更少的参数传递给命令行并通过将其设置为null或空字符串(“”)值来安全地处理错过参数的方法。
例如,如果我运行下面的命令,它应该知道将我未指定的缺失参数(clientName和outputFolder)设置为空字符串。
java -Xmx1024m -jar MainApp.jar "Summary" **<missing>** "2015-06-07" "https://12345.bp.com/bp/" "c:\\Parameters.txt" **<missing>**
以下是我的主要方法的代码:
public static void main(String[] args) {
try {
String dType = args[0];
String clientName = args[1];
String cycleString = args[2];
String mspsURL = args[3];
String inputFile = args[4];
String outputFolder = args[5];
System.out.println("**Main Parameters passed**");
for(String x : args) {
System.out.println(x);
}
runLogic(dType, clientName, cycleString,
mspsURL, inputFile, outputFolder);
} catch(Exception ex) {
ex.printStackTrace();
}
}
任何帮助表示感谢。
答案 0 :(得分:2)
假设例如最后两个是可选的。
String dType = args[0];
String clientName = args[1];
String cycleString = args[2];
String mspsURL = args[3];
String inputFile = (args.length < 4 ? "default inputFile" : args[4]);
String outputFolder = (args.length < 5 ? "default outputFolder" : args[5]);
答案 1 :(得分:1)
如果你真正想要的是丢失物品的关键字,你可以这样做:
String dType = (args[0].equals(keyword)?"":arg[0]);
String clientName = (args[1].equals(keyword)?"":arg[1]);
String cycleString = (args[2].equals(keyword)?"":arg[2]);
String mspsURL = (args[3].equals(keyword)?"":arg[3]);
String inputFile = (args[4].equals(keyword)?"":arg[4]);
String outputFolder = (args[5].equals(keyword)?"":arg[5]);
然后您的输入将是:
java -Xmx1024m -jar MainApp.jar "Summary" "keyword" "2015-06-07" "https://12345.bp.com/bp/" "c:\\Parameters.txt" "keyword"
否则我会使用length
类的Array
属性。
测试输入数组的长度,并仅为那么多变量赋值。
示例:
int i = args.length;
String dType = (i>0?args[0]:""); //Just do this for each argument
i--; //Then reduce counter by 1