我正在尝试修改与JNLP一起部署到我的PC上的应用程序。但是,当我尝试用新的jar替换现有应用程序的JAR时,它无法查找javax.jnlp.SingleInstanceService
和javax.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上复制它(也许通过将其密钥库证书添加到某些文件中)?
答案 0 :(得分:0)
问题不在于jar签名。要使用JNLP API,您应该通过jnlp文件启动jar。
运行jnlp文件的语法是:javaws your_jnlp_file
您的jar应该在jnlp文件内的资源容器中注册,并且您的jar应该作为Web应用程序的一部分进行部署。 您正在将jar作为标准jar启动。 旧的jar不会导致错误的原因,很可能是因为它只处理了UnavailableServiceException。