JavaWebStartを介してデプロイしている単一のアプリケーションがあります。さまざまな起動シナリオ用にいくつかの異なるjnlpファイルがあります。DownloadService2を使用して、定期的に更新を確認しています。アップデートが利用可能になったら、ユーザーにプロンプトを表示します。彼らが更新することを選択した場合、 Runtime.getRuntime()。exec()を使用してjavawsの新しいインスタンスを起動し、完全なjnlp urlを渡してから、System.exit(0)を渡します。事実上、これは更新/再起動サイクルを開始します。
問題は、いくつかのjnlpファイルの1つから開始できた可能性があるため、URLを単純にハードコーディングできないことです。BasicService.getCodeBase()からURLのhost:port部分を取得できることは知っていますが、URLのファイル部分を取得する方法はありますか?現在、argsから取得できるように、次のような「jnlp」引数をapplication-descに追加しています。
<application-desc main-class="my.main.class">
<argument>jnlp=myjnlp.jnlp</argument>
<application-desc/>
これでうまくいくと思いますが、必要以上に難しくしているのではないかと思います。ありがとう。