修改已安装的JNLP应用程序

时间:2019-04-19 06:59:59

标签: jar java-web-start 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上复制它(也许通过将其密钥库证书添加到某些文件中)?

1 个答案:

答案 0 :(得分:0)

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

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

您的jar应该在jnlp文件内的资源容器中注册,并且您的jar应该作为Web应用程序的一部分进行部署。 您正在将jar作为标准jar启动。 旧的jar不会导致错误的原因,很可能是因为它只处理了UnavailableServiceException。