当前位置: 首页 > 面试题库 >

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

宗政功
2023-03-14
问题内容

我想将 命名未命名的 参数都传递给main方法。

目前,我将参数传递为:

 java -jar myfile.jar param1 param2

并将它们作为:

public static void main(String[] args) throws IOException {
    String param1 = args[0];
    String param2 = args[1];
}

但是,我想以一种更动态的方式传递参数-即:

  1. 我可以传递 命名未命名的 参数。
  2. 我可以使用它们的 名称 来获取/处理这些参数;
  3. 每次执行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]
     .....
}

我可以使用一些外部库来简化我的工作。

我已经看到了这一点,它并不全面。

关于如何完成任务的任何投入?


问题答案:

我使用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)的长选项


 类似资料:
  • 问题内容: 我从Eclipse项目构建了可运行的JAR,该项目处理给定的XML文件并提取纯文本。但是,此版本要求文件在代码中进行硬编码。 有没有办法做这样的事情 并让jar在xml文件上执行? 我已经四处查看,给出的所有示例都与在命令行上编译JAR有关,而没有一个处理传入参数。 问题答案: 为什么不 ? 只需修改您的参数即可接收论据并对其进行操作。 在命令行中指定完整路径。

  • 问题内容: 我将主类作为命令行参数传递给启动VM 现在我需要将命令行参数传递给该主类 有什么办法吗? 这就是我做的方式 这里的userVMargs是我的主类的类路径,也是该类的类路径,该类路径用于调用主类内部的类方法 和cmdLine拥有我的主类以及该类及其功能,我使用eclipse作为IDE来开发我的项目 问题答案: 如果要通过发送参数来启动VM,则应发送VM参数而不是程序参数。 程序参数是传递

  • public static void main(String[]args){ 公共类CustomConfiguration{ public static void readConfig(String filename){//从config.properties文件读取 } 我的问题是如何将“a”传递给CustomConfiguration类?

  • 我有一个具有此签名的共享库方法: 我这样称呼它: 但我得到了一个错误: hudson.remoting.ProxyExcture:groovy.lang.MisSingMEDExcture: No签名的方法: dockerBuildWith.call()适用于参数类型:(java.util.LinkedHashMap,java.lang.String,java.lang.String,org.je

  • 问题内容: 我已经创建了一个可执行jar,它可以正常工作。为了进行测试,我在main方法中使用了一个哑变量。 相反,在从php调用此可执行jar时,我需要传递一个字符串变量。 简而言之,我需要: 从PHP调用可执行jar 调用jar时,我需要将PHP的字符串变量传递给可执行jar中的类的main方法。 我该怎么做? 问题答案: 您还可以通过使用exec而不是来完全执行Java ,为它提供&和变量(

  • 要启动Java程序,我可以传递如下参数: 在gradle命令行中有哪些好的方法可以做到这一点: 这是正在建造的。格雷德尔: