Подтвердить что ты не робот

Передача аргументов командной строки в javaws (Java WebStart) исполняемый файл

Резюме для тех, кто, возможно, не хочет так много читать:

Как это сделать:? Если бы мы могли передавать ad-hoc аргументы командной строки в javaws, то приложения javaws могли бы быть больше похожими на "обычное приложение" первого класса ". Например. мы могли бы передавать имена файлов для открытия.

Я хотел бы знать, есть ли способ передать аргументы командной строки ad-hoc в исполняемый файл javaws. Я уже знаю, как их указать в файле JNLP:

<application-desc main-class="org.example.ClassName">
<argument>...

Хотя это можно использовать для того, что я хочу выполнить, я рассматриваю это как обходной путь. Я попробовал

javaws http://example.org/launch.jnlp <some CLI args here>

Но "некоторые аргументы CLI здесь" были просто проигнорированы, я думаю.

Если бы мы могли передавать ad-hoc аргументы командной строки в javaws, то приложения javaws могли бы быть больше похожими на "обычное приложение" первого класса ". Например. мы могли бы передавать имена файлов, которые нужно открыть. Например,

javaws [options] http://example.org/launch.jnlp my_file.jpg

Наличие аргументов, жестко закодированных в JNLP, не удовлетворяет этому варианту использования.

4b9b3361

Ответ 1

Нечего путать. Очень прямой ответ, который я тестировал, и он работает безотлагательно.

Для отправки аргумента командной строки в любой JNLP очень просто.

командная строкa > 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 с прямым аргументом, префиксом с -.

Ответ 2

исполняемый файл javaws принимает параметр run -arg <argument>, который позволяет вызываемому отправлять аргументы в приложение. Я думаю, что они добавлены к аргументам в файле jnlp.

Таким образом, ваш вызов может выглядеть так:

javaws [options] -arg my_file.jpg http://example.org/launch.jnlp

Изменить: Вышеупомянутое решение работает только с OpenJDK javaws, который принимает параметр -arg. Другой вариант, согласно это сообщение в блоге, заключается в том, что вы можете передавать аргументы в файл JNLP с использованием параметров строки запроса URL. Это, очевидно, будет работать только при выполнении javaws с полным URL-адресом и не будет работать, если вы получите доступ к нему как ссылку для загрузки. Я не тестировал это, чтобы он мог работать или не работать.

Ответ 3

динамически генерировать файл webstart jnlp с параметрами.

$javaws [опции] http://example.org/codewriter/write.jnlp?param1=my_file.jpg

кодогенератор захватывает параметр запроса и выписывает динамический jnlp из параметра