Java:将命名和未命名参数的组合传递给可执行的Jar/Main方法

sun*_*are 2 java program-entry-point arguments

我正在寻找一种方法,以便我们可以将命名和未命名的参数传递给main方法.目前我传递的如下

 java -jar myJar param1 param2 param3
Run Code Online (Sandbox Code Playgroud)

并将它们作为

  public static void main( String[] args ) throws IOException
  {
    String param1 = args[0];
    String param2=args[1];
     .....
Run Code Online (Sandbox Code Playgroud)

我必须能够发送它们并在Java中处理它们,以便我可以根据它们的名称读取值,并且每次执行Main方法时都不需要以相同的顺序传递参数.我可以使用一些外部库来使我的工作更轻松.

我想发送我的参数如下,并在java main中处理它

   java -jar myJar param3name=param3 param2name=param2 param1name=param1 param5 param6
Run Code Online (Sandbox Code Playgroud)

我想把它们当作下面的东西处理

     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]
     .....
Run Code Online (Sandbox Code Playgroud)

我已经看过这个链接,并不全面.关于如何完成任务的任何输入?

Arc*_*l33 6

我使用Apache Commons CLI来解析java命令行参数.示例可以在此处找到,可用于执行以下任何选项格式:

  • POSIX之类的选项(即tar -zxvf foo.tar.gz)
  • GNU就像长期选择(即du --human-readable --max-depth=1)
  • 类似Java的属性(即java -Djava.awt.headless=true -Djava.net.useSystemProxies=true Foo)
  • 附加价值的短期权(即gcc -O2 foo.c)
  • 单个连字符的长选项(即.ant -projecthelp)