Я предполагаю, что javaCLI
- это скрипт-обертка, который вызывает java
, и что этот скрипт-обертка удаляет кавычки.
Сообщение об ошибке «позиционный параметр с индексом 0 .. * (файл_пакета) должен быть указан только один раз» говорит мне, что подкоманда install
имеет одно @Parameters
-аннотированное поле String с именем package_file
, поэтому он ожидает только один позиционный параметр, но был вызван с несколькими параметрами.
Вы можете подтвердить, что приложение java неправильно получило 4 аргумента вместо желаемых 2, установив системное свойство -Dpicocli.trace=DEBUG
. Это заставит picocli напечатать некоторые подробности, в том числе то, какие аргументы командной строки он получил.
Я предполагаю, что скрипт оболочки javaCLI
передает параметры следующим образом:
java -cp myjar.jar:picocli-4.2.0.jar com.xxx.MainClass $@
Если в этом случае можно решить проблему, обеспечив сохранение кавычек при передаче аргументов в исполняемый файл java
. Спасибо { ссылка } за идею использования printf для сохранения кавычек:
# attempt to ensure each argument keeps its original quoting
ARGS=$( printf "%q " "$@" )
java -cp myjar.jar:picocli-4.2.0.jar com.xxx.MainClass ${ARGS}
Если мои предположения неверны, пожалуйста, предоставьте более подробную информацию в вопросе.