Как подавить OptionValidator CLI Commons?

#java #log4j #apache-commons-cli

#java #log4j #apache-commons-cli

Вопрос:

Я хочу запустить

 java -jar application.jar -Dlog4j.configuration="path/to/log4j.xml"
 

применение.jar работает с CLI Commons и нуждается во внешнем log4j.xml досье.

Когда я запускаю эту команду, я получаю следующее исключение:

 java.lang.IllegalArgumentException: opt contains illegal character value '.'
    at org.apache.commons.cli.OptionValidator.validateOption(OptionValidator.java:73)
    at org.apache.commons.cli.Option.<init>(Option.java:123)
    at org.apache.commons.cli.Options.addOption(Options.java:131)
    at org.apache.commons.cli.Options.addOption(Options.java:114)
 

потому что Dlog4j.configuration имеет ‘.’.
Как я могу пропустить это?

Ответ №1:

Решается путем приведения проблемного параметра перед -jar .

 java -Dlog4j.configuration=file:C:pathtolog4j.xml -jar application.jar
 

Тогда Common CLI игнорирует это.
Как только я попробовал это, это не удалось, и я отказался, но это было вызвано путем без файлового протокола file: .

Тем не менее, я не знаю, может ли обычный CLI пропустить проверку параметров.