【问题标题】:Java WebStart - 3rd party jar - manifestJava WebStart - 3rd 方 jar - 清单
【发布时间】:2014-07-18 15:55:41
【问题描述】:

我正在尝试使用 Netbeans IDE 运行 Java WebStart 应用程序。我已经使用有效的 Comodo 证书签署了应用程序。当我运行 jar 时,它会弹出一个包含 jar 及其证书详细信息的弹出窗口。但是,它随后会显示另一个带有错误的弹出窗口。我在Java Web Start manifest issue 看到了一个同样问题的帖子,它提供了以下解决方案:

我解决了。

在 jnlpcomponent1.jnlp 中,我看到 sqljdbc4.jar 已经由微软签名。

当我查看它的 manifest.mf 时,它没有属性 Permissions: all-permissions。所以我从 sqljdbc4.jar 中删除所有清单文件并放一个空文件(也删除 MSFTSIG.SF 和 MSFTSIG.RSA)。现在使用我的签名和权限再次构建应用程序:清单文件中的所有权限,并且像魅力一样工作。

在我的应用程序中,“jnlpcomponent1.jnlp”文件包含四个已签名的第三方 jars。我的问题是我如何解压缩这些 jar(用空白替换 Manifest 并删除 .SF 和 .DSA 文件)&重新打包 吗?

有没有办法手动完成(例如,在命令提示符)?我可以手动解压这 4 个 jar,编辑它们的 Manifest,删除 .SF 和 .DSA 文件并重新打包吗?请告诉我。谢谢。

更新:我今天设法解决了这个问题。谢谢。

【问题讨论】:

    标签: java java-web-start manifest.mf


    【解决方案1】:

    我知道这并不完全是您在 netbeans 中的做法,但是如果您使用构建系统(例如 gradle)来管理 webstart 的所有内容,那么您可以将该行添加到您的 jar 任务中build.gradle 看起来像:

    jar{
        from {configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    
        manifest{
            attributes("Main-Class": mainClassName);
        }
    }
    

    这需要每个依赖项(第三方 jars)解压缩(解压缩)它们,然后将它们打包(压缩)到您自己旁边的单个 jar 中,以及它们的所有清单/等文件。有一个用于 netbeans 的 gradle 插件(我们在工作中使用并取得了巨大的成功),但显然需要一些工作来转换您的项目,只是要记住一些事情。我希望这会有所帮助。

    【讨论】:

    • 您好,感谢您的回复。但是,有没有办法手动执行此操作(例如,在命令提示符下)?我可以手动解压缩这 4 个罐子,编辑它们的清单,删除 .SF 和 .DSA 文件并重新打包它们吗?请告诉我。谢谢。
    • 你可以吗?当然,jar 只是一个美化的 zip 文件,真的。只需确保非常小心地保存所有文件结构即可。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    • 2013-06-10
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    相关资源
    最近更新 更多