jar - 修改已安装的 JNLP 应用程序
问题描述
我正在尝试修改使用 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 上复制它(也许通过将它的密钥库证书添加到某个文件)?
解决方案
问题不在于 jar 签名。要使用 JNLP API,您应该通过 jnlp 文件启动您的 jar。
运行 jnlp 文件的语法是:javaws your_jnlp_file
您的 jar 应该在 jnlp 文件内的资源容器中注册,并且您的 jar 应该作为 Web 应用程序的一部分进行部署。您将 jar 作为标准 jar 启动。老jar之所以没有报错,很可能是因为它只是简单的处理了UnavailableServiceException。
推荐阅读
- angular - Angular - 显示单选按钮的选中值
- wordpress - 如何在 WordPress 中编辑主标题高度?
- node.js - 语法错误 GraphQL 预期名称,找到字符串
- prolog - 'swipl' 不是内部或外部命令、可运行程序或批处理文件
- machine-learning - 机器学习中的预测
- mysql - MySQL 按小时分组
- python - 如何使用 python 将原始 json 数据 [as pyhon Dictionary] 写入谷歌云存储?
- parsing - 函数调用的 ANTLR 规则
- r - 为什么我的 R 代码在采购时会出错,但在运行脚本本身时却没有?
- node.js - 如何在nodejs中的Mongoose框架中获取每个月一段时间内的数据总和