Я создал приложение Java Webstart, которое должно получить параметр Base64 в качестве аргумента командной строки.Передача строки Base64 в качестве опции для парсера Apache Commons-CLI
Я использую Apache Common-CLI для анализа аргументов из JNLP. Есть только два аргумента, один из которых - JSON, и внутри этого JSON есть строка Base64.
Проблема заключается в том, что строка Base64 заполняется в конце символом «=» (равным знаком char/equal), и синтаксический анализатор испытывает трудности с распознаванием строки как части аргумента, вместо этого пытается оценить значение «= «как разделитель ключевых значений для аргумента, и это затмевает следующее исключение: org.apache.commons.cli.UnrecognizedOptionException: Unrecognized option
Есть ли способ избежать этого символа или заставить его игнорировать?
Опция CLI построен, используя следующий код:
Option appletBehaviourConfigJSONOption = Option.builder("J")
.longOpt("appletBehaviourConfigJSON")
.hasArg()
.argName("JSON")
.desc("JSON config")
.build();
clioptions.addOption(appletBehaviourConfigJSONOption);
CommandLineParser cliparser = new DefaultParser();
CommandLine cmd = null;
try {
cmd = cliparser.parse(clioptions, args);
} catch (ParseException e) {
e.printStackTrace();
}
И она вызывается из JNLP:
<argument>-appletBehaviourConfigJSON { "appletBehaviourSignatureType": "HASH", "appletBehaviourHashList": [{"id": "1234", "hash": "ZjQzZDM1NTJiYzBhYmZmMDBlNTc0NjIyZDExMDhhM2Y5MmVlOWJjZAo="}, {"id": "5678", "hash": "ZjQzZDM1NTJiYzBhYmZmMDBlNTc0NjIyZDExMDhhM2Y5MmVlOWJjZAo="}], "appletBehaviourCookies": [{"name": "JSESSIONID", "value": "2edee5627c84937f707bdd390b1c"}, {"name": "STICKY", "value": "ASD123213123adsf"}], "appletBehaviourPostURL": "http://example.org", "stampSelection": "WHITE", "setStampAll": true}</argument>
Когда я изменить «=» в «а» на обоих хешей , синтаксический анализатор работает как ожидалось (но теперь у опции есть недействительный Base64, конечно).
Вы можете включать в себя код, который показывает, как вы на самом деле использовать Обще-кли здесь? – centic
Hi @centic только что добавил код. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация. – strangedata
Я попытался воспроизвести это, но не мог, но вы могли бы попытаться использовать одиночную кавычку в JSON, чтобы избежать CLI от выполнения некоторых цитирования/разбора здесь. В противном случае я попытался бы использовать знак равенства вместо пустого, как в '-appletBehaviourConfigJSON = {...' – centic