Передача аргументов командной строки исполняемому файлу javaws (Java WebStart)
Резюме для тех, кто не хочет читать так много:
Как мне это сделать:? Если бы мы могли передавать произвольные аргументы командной строки javaws, то приложения javaws могли бы больше походить на "гражданина 1-го класса", "обычное приложение". Например, мы можем передать имена файлов для открытия.
Я хотел бы знать, есть ли способ передать "ad-hoc" аргументы командной строки в исполняемый файл javaws. Я уже знаю, как их указать в файле JNLP:
<application-desc main-class="org.example.ClassName">
<argument>...
Хотя это может быть использовано для того, чего я хочу достичь, я рассматриваю это как обходной путь. Я старался
javaws http://example.org/launch.jnlp <some CLI args here>
Но "некоторые аргументы CLI здесь" были просто проигнорированы, я думаю.
Если бы мы могли передавать произвольные аргументы командной строки javaws, то приложения javaws могли бы больше походить на "гражданина 1-го класса", "обычное приложение". Например, мы можем передать имена файлов для открытия. Как например
javaws [options] http://example.org/launch.jnlp my_file.jpg
Наличие аргументов, жестко закодированных в JNLP, не удовлетворяет этому варианту использования.
3 ответа
Тут нечего путать. Очень прямой ответ, который я проверил, и он работает идеально.
Отправить аргумент командной строки в любой JNLP очень просто.
командная строка> javaws -open space arg1 space arg2 ... space arg n JNLP url
Пример:
c:\>javaws -open arg1 arg2 arg3 c:\myjnlp.jnlp
Но помните одну вещь, мы можем получить -open
также как args[0]
в основном методе, так что просто избегайте args[0]
, Также не возможно избежать -open
с прямым аргументом в начале -
,
Исполняемый файл javaws принимает опцию запуска -arg <argument>
что позволяет вызываемым отправлять аргументы в приложение. Я думаю, что они добавляются к аргументам в файле jnlp.
Так что ваш звонок может выглядеть так:
javaws [options] -arg my_file.jpg http://example.org/launch.jnlp
Изменить: вышеуказанное решение работает только с челюстями OpenJDK, который принимает -arg
параметр. Согласно этому сообщению, другой вариант заключается в том, что вы можете передавать аргументы в файл JNLP, используя параметры строки запроса URL. Это, очевидно, будет работать, только если вы выполните javaws
с полным URL-адресом и не будет работать, если вы перейдете к нему как ссылка для скачивания. Я не проверял это, поэтому оно может или не может работать.
Динамически генерировать jnlp-файл webstart с параметрами.
$ javaws [параметры] http://example.org/codewriter/write.jnlp?param1=my_file.jpg
кодировщик захватывает параметр запроса и записывает динамический jnlp из параметра