以下是使用apache CommandLineParser
的示例代码public class Foo {
public static void main(final String[] args) throws Exception {
Options options = new Options();
options.addOption("x",
true, "comment for param x");
options.addOption("y",
true, "comment for param y");
CommandLine commandLine = null;
CommandLineParser parser = new PosixParser();
try {
commandLine = parser.parse(options, args);
} catch (ParseException e) {
throw new RuntimeException("Error parsing arguments!");
}
if (!commandLine.hasOption("x")) {
throw new IllegalArgumentException("x"
+ " option is missing!");
}
String numberOfColumns = commandLine.getOptionValue("x");
:
:
}
JUNIT测试代码:
@Test
public void testFoo() throws Exception {
args = new String[2];
args[0] = "x" + "=" + "hello";
args[1] = "y" + "=" + "world";
Foo.main(args);
}
我的问题/疑问:
CommandLineParser一直在抱怨“缺少x选项!”。所以我相信,我将参数及其值传递给命令行解析器的方式是错误的。我也尝试了其他方法。
args[0] = "-x" + "=" + "hello";
args[1] = "-y" + "=" + "world";
以及
args[0] = "x"
args[1] = "hello";
args[2] = "y"
args[3] = "world";
有人可以告诉我传递参数及其值的正确格式,以便成功吗?
提前致谢。
答案 0 :(得分:1)
据我所知,参数必须以减号开头。
args[0] = "-x";
args[1] = "hello";
args[2] = "-y";
args[3] = "world";
答案 1 :(得分:0)
使用以下方法测试输入:
public class Main {
public static void main(String...args) {
System.out.println(Arrays.toString(args));
}
}
以下显示了不同输入的示例
INPUT: -x = hello -y = world
args[0]="-x=hello"
args[1]="-x=world"
INPUT: -x hello -y world
args[0]="-x"
args[1]="hello"
args[2]="-y"
args[3]="-world"