В этом девятнадцатом посте этой серии на разборе аргументов командной строки из кода Java находится jClap ( анализатор аргументов командной строки Java ), который не следует путать с библиотекой под названием JCLAP, которая была основной темой моего предыдущего поста в этой серии. В предыдущем посте рассказывалось о JCLAP 1.4 Джайлса Уинстанли ( snaq.net ), тогда как в этом посте рассказывалось о jClap 2.0 Яна Со ( extreme_logic ).
Стадия «определения» реализуется jClap путем создания экземпляра экземпляра com.extremelogic.common.jclap.Argument и вызова одного из перегруженных методов с именами addArgument или addBooleanArgument . Это продемонстрировано в следующем листинге кода (полный код доступен на GitHub ).
Этап «Определение» с jClap
|
1
2
3
|
final Argument argument = new Argument(arguments);argument.addArgument("file", "Path/name of file", true, 1);argument.addBooleanArgument("verbose", "Enables verbosity", false); |
Предыдущий листинг кода демонстрирует предоставление длинных имен аргументов, описания аргументов, является ли аргумент обязательным или нет, а также количества значений, ожидаемых для аргумента. Насколько я могу судить, нет способа добавить короткое имя (один дефис и один символ) для аргументов.
Этап «синтаксического анализа» достигается с помощью jClap посредством вызова метода processArguments() для экземпляра Argument определенного на этапе «определения». Это однострочный вызов, но он выдает проверенное исключение ArgumentException . Этот однострочный анализ показан в следующем листинге кода.
Этап «Разбор» с jClap
|
1
|
argument.processArguments(); |
Этап «опрос» достигается с помощью jClap посредством вызова методов getArgument в экземпляре Argument который был определен на этапе «определение». Это продемонстрировано в следующем листинге кода.
Этап «Допрос» с jClap
|
1
2
|
out.println("File path/name is '" + argument.getArgument("file") + "'.");out.println("Verbosity is set to " + argument.getArgument("verbose")); |
jClap также упрощает запись использования в стандартный вывод, вызывая метод displayOptions для экземпляра Argument который использовался в этом примере. Это продемонстрировано в следующем листинге кода, который показывает перехват и «обработку» проверенного исключения ArgumentException .
«Использование» в jClap
|
1
2
3
4
5
6
7
|
catch (final ArgumentException argumentException){ out.println( "ERROR: Exception encountered while processing command-line arguments - " + argumentException); argument.displayOptions();} |
Снимки экрана демонстрируют код, описанный в этом посте, который применяет jClap к обработке командной строки. Первое изображение изображает обработку проверенного исключения ArgumentException когда требуемый аргумент --file не был указан, а также отображает оператор использования, предоставленный jClap. Второе изображение изображает обычную обработку аргументов в командной строке.
Есть характеристики jClap, которые следует учитывать при выборе платформы или библиотеки, чтобы помочь с анализом командной строки в Java.
- JClap является открытым исходным кодом с лицензией Apache версии 2.0 .
- JAR commons-jClap-2.0.0.jar имеет размер около 15 КБ и не имеет сторонних библиотечных зависимостей.
- Мне кажется, что jClap поддерживает только «длинные» имена аргументов с двойными дефисами.
- JAR-файл jClap содержит файлы классов, скомпилированные с помощью Java SE 6 ( Major Version 50 ), и поэтому должен работать с приложениями Java, работающими на более старой версии, чем Java SE 6.
- Все аргументы извлекаются из экземпляра
ArgumentкакStrings (аргументы не вводятся). - JClap JAR также включает в себя «примерное» приложение (
SampleArguments.class), которое декомпиляторы IDE (такие как встроенный декомпилятор IntelliJ IDEA и декомпилятор расширенного класса Eclipse ) могут декомпилировать, чтобы увидеть тип исходного кода, в который можно писать используйте jClap.
jClap — это небольшая и простая в использовании библиотека для обработки аргументов командной строки из Java, которая может использоваться с приложениями Java, работающими на версиях Java, таких же старых, как Java SE 6. Библиотека поддерживает только длинные имена аргументов и возвращает значения аргументов как String>/code> type in all cases.
| Опубликовано на Java Code Geeks с разрешения Дастина Маркса, партнера нашей программы JCG . См. Оригинальную статью здесь: Интерфейсы командной строки Java (часть 19): jClap
Мнения, высказанные участниками Java Code Geeks, являются их собственными. |

