0

我有一个我下载的示例代码并想运行它,问题是它使用 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;

}

4

1 回答 1

5

JCommander 背后的想法是提供一个易于配置的选项来提供命令行参数、它们的默认值等。

可以说您的程序需要一个具有默认值的int参数jdbc_batch_size才能2500具有覆盖该值的选项。为此,请按照以下步骤操作,

  1. 您创建自己的课程,让我们调用它CommandLine

导入 com.beust.jcommander.Parameter;

public class CommandLine {

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

 public int jdbc_batch_size=2500;

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

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

  1. 现在您可以简单地访问类似jdbc_batch_sizemain()方法,

int jdbc_batch_size=cli.jdbc_batch_size;

  1. 如果您希望使用override默认值,请-batchSize 1000通过命令行提供

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

于 2016-01-08T11:25:00.470 回答