我有一个通过 Java Web Start 部署的应用程序。对于不同的启动场景,我有几个不同的 jnlp 文件。我正在使用 DownloadService2 定期检查更新。当有可用更新时,我会提示用户。如果他们选择更新,我使用 Runtime.getRuntime().exec() 启动一个新的 javaws实例,传入完整的 jnlp url,然后是 System.exit(0)。实际上,这会启动更新/重启周期。
问题是,因为我可以从几个 jnlp 文件之一开始,所以我不能简单地对 url 进行硬编码。我知道我可以从BasicService.getCodeBase()获取 url 的 host:port 部分,但是有没有办法获取 url 的文件部分?目前,我正在向 application-desc 添加一个“jnlp”参数,类似于以下内容,以便我可以从 args 中检索它:
<application-desc main-class="my.main.class">
<argument>jnlp=myjnlp.jnlp</argument>
<application-desc/>
我认为这会奏效,但我想知道我是否让它变得比需要的更难。谢谢。