Статьи

Интерфейсы командной строки Java (часть 19): jClap

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