运行jnlp文件提示The Jnlp application is not fully signed问题求助
问题根因
错误日志明确指向核心问题:你当前JNLP应用引用的所有jar包虽然都已单独完成签名,但不存在所有jar共有的签名者,不符合OpenWebStart/IcedTea的安全校验规则。
第三方依赖如jogl、gluegen等默认使用其官方的独立证书签名,而你自己开发的项目jar使用内部自定义证书签名,两者没有共同的签名方,因此触发校验失败。你排查的证书全部受信只是安全校验的基础要求,和当前报错的校验逻辑无关。
可行解决方案
方案1:统一重签所有jar(生产环境推荐)
这是最合规的永久解决方案,操作步骤如下:
- 解压所有需要用到的jar包,删除META-INF目录下原有的
*.RSA、*.SF、*.DSA签名相关文件 - 用项目统一的签名证书,通过
jarsigner命令对所有jar(包括第三方依赖和自研代码jar)重新执行签名 - 清理OpenWebStart本地缓存,重新打包部署项目后测试即可
方案2:临时关闭校验(仅本地调试用)
如果仅需要本地快速测试,可以临时调整OpenWebStart的安全配置:
- 打开OpenWebStart设置面板,进入安全配置页
- 关闭「强制校验JNLP应用所有组件使用同一证书签名」的开关,或调低安全级别即可绕过当前报错
方案3:补充JNLP安全配置(辅助校验)
确认你的jnlp文件和所有jar的配置符合权限要求:
- jnlp文件中添加
<security><all-permissions/></security>标签 - 所有jar的MANIFEST.MF文件中补充以下属性:
Permissions: all-permissions Codebase: * Application-Name: 你的应用名称
内容的提问来源于stack exchange,提问作者LuckyPants
相关产品推荐
相关产品推荐

