在java中传递-d选项[重复]

Posted

技术标签:

【中文标题】在java中传递-d选项[重复]【英文标题】:Passing -d option in java [duplicate] 【发布时间】:2016-12-04 22:46:27 【问题描述】:

我正在解决一个问题,要求程序应允许用户使用 -d 命令行选项设置参数。 java 是否提供任何机制来使用 -d 选项传递参数?我找不到,所以我把它解释为命令行选项值是-d,这意味着用户想输入下一个参数。

if ( args[0].equals("-d") )

     parameter = args[0];

这是检查的正确方法吗?有没有更好的方法来检查用户是否输入了-d 选项? java是否为此提供了一些其他机制?

【问题讨论】:

使用命令行参数解析器。 JCommander(无从属关系)是我的偏好 - 还有其他人。 然后parameter = "-d",或null - 这就是你想要的吗?例如,看看 Apache Commons CLI;和***.com/questions/10745811/… 【参考方案1】:

我认为要求是指-D(大写字母),而不是-d。此类选项用于将附加参数传递给 java。例如,-Dmy.option=value。在这种情况下,您可以通过 System 类访问此属性:

String myOption = System.getProperty("my.option");

【讨论】:

【参考方案2】:

如果有人用./yourapp something else -d 运行程序怎么办? 现在参数 -d 存在,但不在位置 0

所以,我的建议是遍历所有参数并检查您需要什么。

int i;
boolean dParam = false;
for (i = 0; i < args.length; i++) 
    if (args[i].equals("-d")) 
        dParam = true;
    

如果您希望用户在 -d 之后输入一些内容,例如文件名,那么我建议您这样做:

int i;
boolean dParam = false;
String dParamValue;

for (i = 0; i < args.length; i++) 
    if (args[i].equals("-d")) 
        dParam = true;
        dParamValue = args[++i];
    

【讨论】:

这看起来很像重新发明***。你的充其量是方方正正的…… 这不是重新发明***。这是 OP 初始代码的更新版本。【参考方案3】:

您传递给正在运行的程序的所有参数,都将通过 main 方法中的参数 String[] args 进入应用程序..

然后您可以通过检查参数数组是否包含该键来检查是否请求了字典。

示例:

public static void main(String[] args) 
System.out.println("is dictionary there?: " + Arrays.asList(args).contains("d"));

if (Arrays.asList(args).contains("d")) 
    prepateDictionary();
else 
    prepareSomethingElse();



【讨论】:

以上是关于在java中传递-d选项[重复]的主要内容,如果未能解决你的问题,请参考以下文章

防止在get方法php中传递其他具有相同名称的隐藏下拉字段[重复]

如何使用 npm babel 和 commandjs 将选项传递给脚本 [重复]

通过使用java代码传递URL下载文件[重复]

如何在 docker run 命令中将 Java 选项/变量传递给 Spring Boot 应用程序

如何将系统属性传递给 jar 文件

尝试通过 Javascript 在新选项卡中打开 URL [重复]