我想把 named 和 unnamed 参数都传递给main方法。
目前我传递参数为:
java -jar myfile.jar param1 param2
并将它们处理为:
public static void main(String[] args) throws IOException {
String param1 = args[0];
String param2 = args[1];
}
然而,我想以一种更动态的方式传递参数-即,这样:
1.我可以传递 named 和 unnamed 参数;
1.我可以用它们的 * 名字 * 来获取/处理这些参数;
1.每次执行main方法时,我将不需要以相同的顺序传递它们。
以这样的方式通过:
java -jar myJar param3name=param3 param2name=param2 param1name=param1 param5 param6
并以这样的方式处理:
public static void main(String[] args) throws IOException {
//something like
String param3 = getvaluemethod("param3name");
String param1 = getvaluemethod("param1name");
.....
String param5 = args[n]
String param6 = args[n+1]
.....
}
我很乐意与一些外部库一起工作,这将使我的工作更容易。
我已经看过this了,它并不全面。
如何完成任务有什么建议吗?
4条答案
按热度按时间atmip9wb1#
Apache Commons CLI是我用来解析java命令行参数的工具。可以找到here的示例,并可用于执行以下任何选项格式:
tar -zxvf foo.tar.gz
)du --human-readable --max-depth=1
)java -Djava.awt.headless=true -Djava.net.useSystemProxies=true Foo
)gcc -O2 foo.c
)ant -projecthelp
)bt1cpqcv2#
根据@Mac70的回答和一些补充,
如果你需要任何广泛的,你需要看看@Archangel33的答案。
g0czyy6m3#
只要参数和名称不包含空格--你可以得到所有的参数和名称,在“=”键处拆分,并将键/值对添加到HashMap中。以后你可以使用key来获取任何你想要的值。
编辑:如果你不想在Map中添加一些元素,那么如果这些元素不包含“=”键,你可以忽略它们。
zphenhs44#
目前我不知道解决“-drop-value abc”的最佳实践是什么,但通常最好以“-drop-value=abc”的形式检索值。