Статья на JavaWorld Обработка аргументов командной строки в Java: Дело, закрытое доктором Матиасом Лауксом, представляет простую библиотеку на основе Java для обработки аргументов командной строки , на которую в этом посте я буду ссылаться как на jw-options . Ссылочная статья содержит справочную информацию о том, почему определенные конструктивные решения были приняты при построении класса Options
. «Заключение» статьи описывает преимущество использования сопровождающего класса и библиотеки: «В этой статье описывается класс Java, который обеспечивает удобную обработку параметров командной строки для программ Java. Структура достаточно гибкая, чтобы обрабатывать даже сложные ситуации, и в то же время предлагает API, который позволяет определять приемлемый синтаксис командной строки с ограниченными усилиями при кодировании ».
«Библиотека», представленная в этой статье о JavaWorld, состоит из трех классов Java: Options
, OptionData
и OptionSet
. Это демонстрируется на следующем снимке экрана, который отображает содержимое файла options.jar .
Этап «определения» с помощью «jw-options» достигается с OptionSet
классов Options
и OptionSet
. Это продемонстрировано в следующем листинге кода (полный листинг кода доступен на GitHub, и пример здесь похож на те, что использовались в предыдущих постах этой серии)
Этап «Определение» с опциями jw
1
2
3
4
|
final Options options = new Options(arguments, Multiplicity.ZERO_OR_ONE); final OptionSet defaultOptions = options.getSet(); defaultOptions.addOption( "f" , false , Separator.BLANK, Multiplicity.ONCE); defaultOptions.addOption( "v" , Multiplicity.ZERO_OR_ONE); |
Только что показанный листинг кода демонстрирует использование нескольких перегруженных методов addOption
. Для настройки параметра пути к файлу и имени ( -f
) вызывается версия с четырьмя аргументами, состоящая из одной буквы флага («f»), разделителя между флагом и его аргументом (пробел), и сколько раз флаг должен ожидаться (ровно одно вхождение). Второй аргумент для многословия («-v») устанавливается путем вызова версии addOption
с двумя аргументами, которая указывает символ флага («v») и его число ожидаемых вхождений (ноль или одно вхождение).
Стадия «синтаксического анализа» достигается в «jw-options» путем вызова метода check
Options
. Этот метод также может быть использован, как следует из его названия, для проверки точности аргументов. Это продемонстрировано в следующем листинге кода.
Этап «Разбор» с опциями jw
1
2
3
4
5
|
if (!options.check( false , false )) { out.println( "ERROR: " + options.getCheckErrors()); System.exit(- 1 ); } |
В только что показанном примере «синтаксического анализа» метод getCheckErrors()
класса getCheckErrors()
был использован для доступа к ошибкам в проанализированных параметрах, которые привели к тому, Options.check
метод Options.check
возвратил false
.
Этап «допрос» с «jw-options» демонстрируется в следующем листинге кода.
Этап «Допрос» с опциями jw
1
2
|
out.println( "File path/name is " + defaultOptions.getOption( "f" ).getResultValue( 0 )); out.println( "Verbosity is set to " + defaultOptions.isSet( "v" )); |
Пример «опроса» демонстрирует использование OptionSet
getOption
для доступа к опции, представляющей опцию «-f», а затем вызывает его getResultValue(0)
для доступа к первому (и только в этом случае) значению, связанному с этим «-f» Флаг. Вторая строка в этом примере просто запрашивает, был ли указан флаг -v или нет (и не беспокоится или не ожидает, что значение будет связано с этим флагом) с помощью метода isSet
.
Снимок экрана показан рядом, чтобы продемонстрировать код, показанный до сих пор, который использует «jw-options». На рисунке показаны сообщения, сообщаемые, когда ожидаемые аргументы командной строки не предоставлены, и два примера с использованием флагов командной строки, как и предполагалось.
Есть характеристики «jw-options», которые следует учитывать при выборе платформы или библиотеки, чтобы помочь с анализом командной строки в Java.
- «Библиотека» «jw-options» является открытым исходным кодом в том смысле, что ее исходный код подробно представлен и обсужден в статье JavaWorld « Обработка аргументов командной строки в Java: дело закрыто, а исходный код включен в JAR, доступный для загрузки». как ZIP-файл jw-0816-command.zip . » Однако лицензия на эту «библиотеку» не очевидна.
- Библиотека «jw-options» небольшая: размер файла options.jar составляет около 13 КБ.
- Насколько я могу судить, невозможно указать «длинные» имена флагов с двойными дефисами с «jw-options».
- Команда javap, запускаемая на классах в jar- файле «jw-options», показывает « major version: 49 », что означает, что она скомпилирована с J2SE 5 и должна работать с приложениями, работающими на Java, такими же старыми, как J2SE 5 (я заметил использование StringBuffer в код, в котором
StringBuilder
работал бы так же хорошо).
«Библиотека» «jw-options», обсуждаемая в этом посте, скорее всего заинтересует тех, кому нужно использовать библиотеку обработки командной строки с более старой версией Java или кто заинтересован в ней в академическом смысле. Поскольку эта «библиотека» подробно описана в соответствующей статье JavaWorld и поскольку она является открытым исходным кодом, можно просмотреть код и просмотреть статью, чтобы увидеть, как она выполняет синтаксический анализ командной строки и почему она использует этот подход. Учитывая, что лицензия на «jw-options» неочевидна, и учитывая, что это относительно «старая» библиотека, которая, похоже, не получает обновлений, вполне вероятно, что большинство разработчиков Java предпочтут некоторые альтернативные библиотеки, описанные в этом документе. во многих случаях серии «jw-options».
Дополнительные ссылки
- Статья JavaWorld : Обработка аргументов командной строки в Java: дело закрыто
- Исходный код и библиотека Zip-файл для загрузки
Опубликовано на Java Code Geeks с разрешения Дастина Маркса, партнера нашей программы JCG . См. Оригинальную статью здесь: Интерфейсы командной строки Java (часть 17): jw-options
Мнения, высказанные участниками Java Code Geeks, являются их собственными. |