首页 > 解决方案 > 修改已安装的 JNLP 应用程序

问题描述

我正在尝试修改使用 JNLP 部署到我的 PC 上的应用程序。但是,当我尝试用我的新 jar 替换现有应用程序的 JAR 时,它无法查找javax.jnlp.SingleInstanceServicejavax.jnlp.BasicService.

我已经用我自己的密钥对(不是原始密钥对)签署了主 JAR 文件,但它仍然不起作用。

以下两行抛出UnavailableServiceException(未初始化)。

BasicService lookup = (BasicService)ServiceManager.lookup("javax.jnlp.BasicService");

SingleInstanceService singleInstanceService = (SingleInstanceService)ServiceManager.lookup("javax.jnlp.SingleInstanceService");

在未修改的 JAR(使用 运行java.exe -cp SomeJar.jar)上,不会引发异常。我确信这是一个签名问题,因为即使是没有其他修改的已签名文件仍然存在此问题。

有什么办法可以在我修改过的 JAR 上复制它(也许通过将它的密钥库证书添加到某个文件)?

标签: jarjava-web-startjnlp

解决方案


问题不在于 jar 签名。要使用 JNLP API,您应该通过 jnlp 文件启动您的 jar。

运行 jnlp 文件的语法是:javaws your_jnlp_file

您的 jar 应该在 jnlp 文件内的资源容器中注册,并且您的 jar 应该作为 Web 应用程序的一部分进行部署。您将 jar 作为标准 jar 启动。老jar之所以没有报错,很可能是因为它只是简单的处理了UnavailableServiceException。


推荐阅读