2016-05-26 7 views
0

Я пытаюсь разобрать аргументы командной строки, какJava CLI: Брус разобрать аргументы

Options options = new Options(); 
     options.addOption("c", "count", false, "number of message to be generated"); 
     options.addOption("s", "size", false, "size of each messages in bytes"); 
     options.addOption("t", "threads", false, "number of threads"); 
     options.addOption("r", "is random", false, "is random"); 
     CommandLine cli = new DefaultParser().parse(options, args); 

     int count = Integer.parseInt(cli.getOptionValue("c", "20000000")); 
//  int count = Integer.parseInt(cli.getOptionValue("c", "100")); 
     int recordSize = Integer.parseInt(cli.getOptionValue("s", "512")); 
     int threads = Integer.parseInt(cli.getOptionValue("t","4")); 
     boolean isRandom = Boolean.valueOf(cli.getOptionValue("r", "true")); 
     System.out.println(" threads "+threads); 
     System.out.println(" count "+count); 

и я запустить его в упадке с

t 6 c 7 

, но я всегда получаю

threads 4 
count 20000000 

что мне не хватает?

+2

Попробуйте '-t 6 -c 7'. – Chill

+0

такой же результат. все еще не работает – AbtPst

+0

Вы перешли в 'false' для всех параметров, которые вы добавляете. Этот параметр указывает, будет ли параметр принимать аргумент, который для всех, кроме случайного, я бы сказал, будет правдой. – Chill

ответ

1

Вы должны использовать метод true для метода addOption, когда опция принимает аргумент. Из Javadoc:

  • флага @param hasArg треска, если аргумент требуется после этой опции
options.addOption("c", "count", true, "number of message to be generated"); 
    options.addOption("s", "size", true, "size of each messages in bytes"); 
    options.addOption("t", "threads", true, "number of threads"); 
    options.addOption("r", "is random", false, "is random"); 

Да, и ведущий - необходим для спецификации короткого варианта (например, -t 4) и ведущий -- необходим для спецификации с длинными опциями (например, --threads 4).

+0

спасибо! кто это сделал. после этого мне все еще нужно было указать как -t = 6 – AbtPst

+0

Когда я указывал в IDE аргументы программы как '-t 6 -c 200', это работает. –

 Смежные вопросы

  • Нет связанных вопросов^_^