У меня есть одно приложение, которое я развертываю через Java Web Start. У меня есть несколько разных файлов jnlp для разных сценариев запуска. Я использую DownloadService2 для периодической проверки обновлений. Когда доступно обновление, я запрашиваю у пользователя. Если они решат обновиться, я запускаю новый экземпляр javaws с помощью Runtime.getRuntime().exec(), передавая полный URL-адрес jnlp, затем я System.exit(0). По сути, это запускает цикл обновления/перезапуска.
Проблема в том, что, поскольку я мог бы начать с одного из нескольких файлов jnlp, я не могу просто жестко указать URL-адрес. Я знаю, что могу получить часть URL-адреса host:port из BasicService.getCodeBase(), но есть ли способ получить файловую часть URL-адреса? В настоящее время я добавляю аргумент «jnlp» в описание приложения, подобное следующему, чтобы я мог получить его из args:
<application-desc main-class="my.main.class">
<argument>jnlp=myjnlp.jnlp</argument>
<application-desc/>
Я думаю, что это сработает, но мне интересно, делаю ли я это сложнее, чем нужно. Спасибо.