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