Java 无法检索命令行选项
我一直在想这个问题。没有错误,但我没有看到期望的答案:Java 无法检索命令行选项,java,command-line,Java,Command Line,我一直在想这个问题。没有错误,但我没有看到期望的答案: public class Clopts { private static Options options = null; private static final String InputDir = "i"; private static final String OutputDir = "o"; private String input; private CommandLine cmd = nu
public class Clopts {
private static Options options = null;
private static final String InputDir = "i";
private static final String OutputDir = "o";
private String input;
private CommandLine cmd = null;
static{
options = new Options();
options.addOption(InputDir, false, "Input Directory");
options.addOption(OutputDir, false, "Output Directory. " + OutputDir );
}
public static void main(String[] args) {
Clopts cliProg = new Clopts();
cliProg.loadArgs(args);
}
private void loadArgs(String[] args){
CommandLineParser parser = new PosixParser();
try {
cmd = parser.parse(options, args);
} catch (ParseException e) {
System.err.println("Error parsing arguments");
e.printStackTrace();
System.exit(1);
}
if (cmd.hasOption(InputDir)){
input = cmd.getOptionValue(InputDir);
System.out.println(input); // This is always null :(
}
}
}
当我传递参数时-I foo-o bar
但我并不是每次看到的foo或bar都是空的
我还想在主模块中打印LN。如何从命令行获取选项,然后打印出选项。当您使用以下命令定义选项时:
options.addOption(InputDir, false, "Input Directory");
options.addOption(OutputDir, false, "Output Directory. " + OutputDir );
false
表示它们不接受参数。如果需要选项值,则必须在此处指定true
。在定义选项时使用:
options.addOption(InputDir, false, "Input Directory");
options.addOption(OutputDir, false, "Output Directory. " + OutputDir );
false
表示它们不接受参数。如果需要选项值,必须在此处指定true
。我正在使用现有库。。我正在使用apache commons cli库?当您System.out.println(args)时会发生什么代码>?根据Java命名约定,您应该编写私有静态最终字符串输入\u DIR=“i”
@DanielKaplan,它将打印类似于[Ljava.lang.String;@13e8d89
的内容。我本想打印它的内容,但是的,我应该更清楚。我使用的是现有库..我使用的是apache commons cli库?当您System.out.println(args)时会发生什么
?根据Java命名约定,您应该编写私有静态最终字符串输入_DIR=“i”
@DanielKaplan,以打印类似[Ljava.lang.String;@13e8d89
我本想打印它的内容,但是的,我本应该更清楚。太棒了。我以为那些标志是用于可选或必填字段的。我如何在主模块中打印这些选项。不确定这是什么意思,请打印用法/帮助信息?是的。但是..现在println在“loadArgs”中方法,但如何在“main”中打印这些参数方法?您可以将值分配给一个成员变量,然后从main
Awesome]打印它。我认为这些标志用于可选或必填字段。如何在主模块中打印这些选项。不确定这是什么意思,请打印用法/帮助信息?是的。但是..现在,println在“loadArgs”中方法,但如何在“main”方法中打印这些参数?您可以将值分配给成员变量,然后从main