В этом девятнадцатом посте этой серии на разборе аргументов командной строки из кода 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
какString
s (аргументы не вводятся). - 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, являются их собственными. |