Предположим, что приложение Java принимает целочисленный аргумент командной строки, скажем бубу
.
Предполагая, что кто-то использует приличный синтаксический анализатор командной строки (и я использую - https://github.com/jopt-simple/jopt-simple ), а также помня о переключателе -D java, это некоторые из типичных способов передачи этого параметра командной строки:
- bubu 5
(или - bubu = 5
или - bubu5
) - Dbubu = 5
Где первый аргумент программы и должен обрабатываться приложением с помощью парсера командной строки, тогда как второй аргумент виртуальной машины уже проанализирован java, что делает его доступным как Integer. getInteger ("bubu")
Я немного озадачен. Что мне использовать? Использование системного свойства:
Насколько я могу видеть, Единственный минус в том, что все параметры командной строки должны использовать флаг -D
.
Пожалуйста, совет.
Спасибо.
РЕДАКТИРОВАТЬ
Еще один плюс системных параметров - «их можно использовать, даже если приложение не является автономным, начиная с основного, но и когда приложение является веб-приложением или модульным тестом». - спасибо https: // stackoverflow.com / users / 571407 / jb-nizet
EDIT2
Позвольте мне сосредоточиться на этом подробнее. Есть ли какие-то серьезные причины (помимо эстетики) не использовать параметры системы, как всегда?
EDIT3
Хорошо, я думаю, что теперь понял. Если мой код, вероятно, будет загружен веб-приложением, тогда возникает проблема потенциального конфликта имен, поскольку другие веб-приложения, размещенные в том же веб-контейнере, совместно используют пространство системных свойств с моим кодом.
Следовательно, я должен быть осторожным и заранее определить свойства моей системы. Итак, не больше бубу
, теперь это com.shunra.myapp.bubu
. Это означает, что вместо простого
-Dbubu=5
у меня есть
-Dcom.shunra.myapp.bubu=5
, который становится менее привлекательным для простого приложения командной строки.
Другая причина была дана Марком Петерсом , что мне очень понравилось.