JavaWebStart-第三方jar-清单

JavaWebStart-第三方jar-清单,java,java-web-start,manifest.mf,Java,Java Web Start,Manifest.mf,我正在尝试使用Netbeans IDE运行JavaWebStart应用程序。我已使用有效的Comodo证书签署了应用程序。当我运行jar时,它会弹出一个包含jar及其证书详细信息的弹出窗口。但是,它会显示另一个带有错误的弹出窗口。我在这里看到了一篇文章,内容与此相同,提供了以下解决方案: 我解决了 在jnlpcomponent1.jnlp中,我看到sqljdbc4.jar已经由microsoft签名 当我查看它的manifest.mf时,它没有Permissions属性:all Permissi

我正在尝试使用Netbeans IDE运行JavaWebStart应用程序。我已使用有效的Comodo证书签署了应用程序。当我运行jar时,它会弹出一个包含jar及其证书详细信息的弹出窗口。但是,它会显示另一个带有错误的弹出窗口。我在这里看到了一篇文章,内容与此相同,提供了以下解决方案:

我解决了

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

当我查看它的manifest.mf时,它没有Permissions属性:all Permissions。因此,我从sqljdbc4.jar中删除了所有清单文件,并放置了一个空的清单文件(同时删除MSFTSIG.SF和MSFTSIG.RSA)。现在用我的签名和权限重新构建应用程序:所有权限都在清单文件中,工作起来像个符咒

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

是否有办法手动执行此操作(例如,在命令提示下执行此操作)?我是否可以手动解压缩这4个JAR,编辑它们的清单,删除.SF和.DSA文件并重新打包?请让我知道。谢谢


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

我知道在netbeans中这并不是你要做的事情,但是如果你使用一个构建系统(比如gradle)来管理webstart的所有内容,那么你可以在build.gradle中将这一行添加到你的jar任务中,如下所示:

jar{
    from {configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }

    manifest{
        attributes("Main-Class": mainClassName);
    }
}

这需要将每个依赖项(第三方jar)解压(解压)它们,然后将它们打包(解压)到您自己的jar旁边的单个jar中,以及它们的所有manifest/etc文件。有一个用于netbeans的gradle插件(我们在工作中非常成功地使用了该插件),但显然需要一些工作来转换您的项目,这只是需要记住的一点。我希望这对你有点帮助

嗨,谢谢你的回复。但是,是否有方法手动执行此操作(例如,在命令提示下)?我可以手动解压缩这4个JAR,编辑它们的清单,删除.SF和.DSA文件并重新打包吗?请让我知道。谢谢,可以吗?当然,jar只是一个美化的zip文件,真的。只需确保非常小心地保留所有文件结构即可。