0

仅供参考:我在 Windows 机器上运行这个 Java 程序。我确信这很重要。

基本上,我在为带有双连字符的选项指定值时遇到问题。单连字符选项工作正常。

import org.apache.commons.cli.*;

public class Test {
    public static void main(String[] args) throws ParseException {
        String[] arguments = new String[] { "--input file.txt" };

        // create the Options
        Options options = new Options();
        options.addOption( "i", "input", false, "Specify the input file." );

        // Create the parser
        CommandLineParser parser = new GnuParser();

        // Parse the command line
        CommandLine cmd = parser.parse(options, arguments);
    }
}

程序失败并出现错误:

线程“主”org.apache.commons.cli.UnrecognizedOptionException 中的异常:无法识别的选项:--input file.txt

如果我将参数指定为-i file.txt,则没有错误。如果参数是--input,也没有错误。为什么双连字符选项不接受任何值?它与解析器有关还是我在 Windows 机器上运行它?

我在这里做错了什么?任何帮助,将不胜感激。

非常感谢。

4

1 回答 1

1

问题是您如何在样本中指定 tha 参数,而不是

String[] arguments = new String[] { "--input file.txt" };

您需要指定

String[] arguments = new String[] { "--input", "file.txt" };

解析器希望以 java 在 main() 方法中提供的方式获取参数,以空格分隔,否则您指示解析器处理选项“input file.txt”,即它将整个字符串视为选项的名称。

于 2015-04-03T04:27:14.837 回答