Страница для getopt4j описывает это как «библиотеку для анализа аргументов командной строки в соответствии со стилем GNU». Затем на странице вводится getopt4j : «Библиотека getopt4j предназначена для синтаксического анализа параметров командной строки таким же образом, как и функция C getopt () в glibc (библиотека времени выполнения GNU C). Он пытается сделать это более простым, более ориентированным на Java образом, чем оригинальный продукт ». В этом посте описывается использование getopt4j для разбора параметров командной строки таким же образом, как это было сделано для библиотек, описанных в предыдущих 27 публикациях этой серии .
Этап «определения» выполняется в getopt4j с помощью экземпляров CLOptionDescriptor как показано в следующем листинге кода (полный исходный код доступен на GitHub ).
Этап «Определение» с getopt4j
|
01
02
03
04
05
06
07
08
09
10
11
12
|
final CLOptionDescriptor fileDescriptor = new CLOptionDescriptor("file", CLOptionDescriptor.ARGUMENT_REQUIRED, 'f', "Path and name of file.");final CLOptionDescriptor verboseDescriptor = new CLOptionDescriptor("verbose", CLOptionDescriptor.ARGUMENT_DISALLOWED, 'v', "Is verbosity enabled?");final CLOptionDescriptor[] optionsDefinitions = new CLOptionDescriptor[]{fileDescriptor, verboseDescriptor}; |
Как показано в приведенном выше коде, экземпляры CLOptionDescriptor помещаются в массив для представления в анализатор getopt4j.
Этап «синтаксического анализа» достигается в getopt4j путем создания экземпляра класса CLArgsParser . Конструктор этого класса принимает аргументы командной строки в массиве String[] и массив экземпляров CLOptionDescriptor представляющих определения параметров. Это показано в следующем листинге кода.
Этап «Разбор» с помощью getopt4j
|
1
|
final CLArgsParser parser = new CLArgsParser(arguments, optionsDefinitions); |
Этап «опрос» в getopt4j выполняется путем извлечения List<CLOption> посредством вызова метода getArguments() в экземпляре CLArgsParser . Каждый экземпляр CLOption может быть запрошен его getId() для получения проанализированного параметра по его «короткому» имени (в данном примере «f» или «v»). Как только соответствующий экземпляр CLOption будет найден с помощью его getId() , тот же самый экземпляр CLOption предоставит значение, связанное с командной строкой, с этим параметром посредством вызова метода getArgument() метода getArgument() . Этот процесс «допроса» демонстрируется в следующем листинге кода.
Этап «Допрос» с getopt4j
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
String filePathAndName = null;boolean verbose = false;final List<CLOption> options = parser.getArguments();for (final CLOption option : options){ switch(option.getId()) { case 'f' : filePathAndName = option.getArgument(); break; case 'v' : verbose = true; break; }}out.println("File path/name is '" + filePathAndName + "' and verbosity is " + verbose); |
Библиотека getopt4j позволяет легко запрашивать информацию об использовании / помощи, передавая массив экземпляров CLOptionDescriptor статическому методу CLUtil.describeOptions(CLOptionDescriptor[]) . Это продемонстрировано в следующем листинге кода: пара строк кода вызывается, когда обнаруживается, что путь / имя файла не указан.
Заявление об использовании с getopt4j
|
1
2
3
4
5
|
if (filePathAndName == null){ out.println("ERROR: The file path/name option is required but was not provided.\n\n" + CLUtil.describeOptions(optionsDefinitions));} |
Первый из следующих двух снимков экрана отображает автоматически сгенерированное выражение «использование», которое код может вызывать, когда не указана требуемая «опция файла». На втором изображении показаны различные комбинации длинных и коротких названий опций «file» и «verbose».
Существуют характеристики getopt4j, которые следует учитывать при выборе платформы или библиотеки, чтобы помочь с анализом командной строки в Java.
- getopt4j является открытым исходным кодом и выпущен под лицензией Apache, версия 2.0 .
- JAR-файл getopt4j-1.2.jar имеет размер приблизительно 16 КБ.
- Классы в getopt4j-1.2.jar (июнь 2016 г.), доступные в репозитории MVN (и центральном репозитории Maven ), скомпилированы для Java SE 6 (« основная версия: 50 »).
- Лучшие примеры использования getopt4j представлены в каталоге примеров в дистрибутиве.
Библиотека getopt4j предоставляет GNU C getopt () -подобную функциональность и API со стилем Java.
Дополнительные ссылки
- getopt4j (GitHub)
- getopt4j 1.2 (репозиторий Maven / MVN)
- Примеры getopt4j
- Примеры GNU C getopt ()
| Опубликовано на Java Code Geeks с разрешения Дастина Маркса, партнера нашей программы JCG . Смотрите оригинальную статью здесь: Интерфейсы командной строки Java (часть 28): getopt4j
Мнения, высказанные участниками Java Code Geeks, являются их собственными. |

