Передача аргументов командной строки исполняемому файлу 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 из параметра

Другие вопросы по тегам