gpt4 book ai didi

java - 如何防止 jarsign 脚本覆盖已签名 jar 中的现有 list 值?

转载 作者:行者123 更新时间:2023-11-30 07:27:25 25 4
gpt4 key购买 nike

我正在构建一个 Eclipse 插件,我想用签名的 jar 来交付它。

使用 Eclipse UI 创建更新站点并手动构建插件和功能后,我想对创建的 jar 进行签名。

这样做会导致 jar 中的 list 丢失其 OSGI 元信息属性,从而在重新启动 eclipse 后找不到插件。 Jars 的 list 中仅保留签名信息。

我使用此代码片段对工件进行签名,但我也可以使用 JDK 工具 jarsign 重现此行为:

<signjar alias="${keystore.alias}" keystore="${keystore}"
storepass="${keystore.password}"
lazy="true" tsaurl="http://time.certum.pl/">
<path>
<path refid="plugins"/>
<path refid="features"/>
</path>
</signjar>

在插件中,我使用插件提供的 list ,如下所示:

Bundle-ManifestVersion: 2
Bundle-Name: Tomcat Manager Plugin

如何在签名时保留现有 list ?

最佳答案

我发现从 JDK 的角度来看,插件 Manifest 并不是“真正的”Manifest。从 JDK 角度来看,Manifest 需要具有 Attribute其中的 list 版本。因此问题的 list 应如下所示:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Tomcat Manager Plugin

如果 Manifest 看起来像这样,并且现在具有明显的强制属性 Manifest-Version,则 jarsigner 会按预期完成其工作并保留现有的 Manifest 内容。

关于java - 如何防止 jarsign 脚本覆盖已签名 jar 中的现有 list 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36641965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com