1

私はこれに頭を悩ませようとしてきました。エラーはありませんが、目的の回答が表示されません:

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 が、null が表示されるたびに foo または bar が表示されません。

また、メインモジュールでprintlnしたいです。コマンド ラインからオプションを取得し、オプションの内容を出力するにはどうすればよいですか。

4

1 に答える 1

4

オプションを次のように定義する場合:

options.addOption(InputDir, false, "Input Directory");
options.addOption(OutputDir, false, "Output Directory. " + OutputDir );

false彼らが引数を取らないことを意味します。オプション値が必要な場合は、trueここで指定する必要があります。

于 2013-01-04T19:01:56.820 に答える