我有一个示例代码,我想下载并运行它,问题是它使用JCommander加载了一些配置,我没有配置文件,但它想加载一个,所以我想知道;我如何使用JCommander,我阅读了文档,并根据该站点提供了一个用于解析命令行参数的框架,但是我真的不明白这意味着什么,这个错误确实使我无法执行我的项目,这是代码请求对于.conf文件:

         BasicConfigurator.configure(); // TODO: config from options

        // Parse the command line options
        CliOptions options = new CliOptions();
        new JCommander(options, args);

        if (StringUtils.isBlank(options.configFile))
        {
            options.configFile = "/etc/car-counter/car-counter.conf";
        }

        // Read in the configuration
        Wini ini = new Wini();
        ini.getConfig().setMultiOption(true);
        ini.load(new File(options.configFile));

        new DefaultProcessor(ini).process();


这是CliOption类

public class CliOptions
{
@Parameter(names = { "-c", "--config" }, description = "Sets the location of the configuration file.")
public String configFile;


}

最佳答案

JCommander背后的想法是拥有一个易于配置的选项,以提供命令行参数,其默认值等。

可以说您的程序需要一个int参数jdbc_batch_size,其默认值是2500,并且可以选择覆盖该值。为此,请按照以下步骤操作,


您创建自己的类,将其命名为CommandLine


导入com.beust.jcommander.Parameter;

public class CommandLine {

 @Parameter(names = "-batchSize", description = "JDBC batch size",required=false)

 public int jdbc_batch_size=2500;

 }



现在,在CommandLine cli = new CommandLine();方法中创建上述类main()的对象


创建指挥官对象JCommander cmdr = new JCommander(cli, args);


现在,您可以通过jdbc_batch_size方法简单地访问main()



  int jdbc_batch_size = cli.jdbc_batch_size;



如果希望使用override默认值,则可以通过命令行提供-batchSize 1000


简而言之,JComamnder是如何工作的。

关于java - 如何使用JCommander,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34675130/

10-10 03:28