1

尝试加载使用pack200压缩的 jar 时出现问题。发现我的jar文件使用后无法验证的错误unpack200

这是场景:

  1. 创建密钥库keytool -keystore key -genkey -alias hj
  2. 在罐子上签名jarsigner -keystore key HelloJApplet.jar hj
  3. 压缩那个jar文件:pack200 HelloJApplet.jar.pack.gz HelloJApplet
  4. 解压并重命名:unpack200 HelloJApplet.jar.pack.gz HelloJAppletUnpack.jar
  5. 验证罐子:jarsigner -verify HelloJApplet.jarjarsigner -verify HelloJAppletUnpack.jar

对于HelloJApplet.jar它显示jar verified.HelloJAppletUnpack.jar显示一个错误jarsigner: java.lang.SecurityException: SHA-256 digest error for org/ff/ffw/app/ HelloJApplet.class

到目前为止我所做的有什么问题吗? 请纠正我遗漏或错误的观点。

4

2 回答 2

4

对pack200 jar签名,需要pack+unpack(即重新打包),签名再打包。请参阅http://wiki.eclipse.org/Pack200#Compression_and_Signinghttp://www.java.net/node/679859

pack200 --repack b.jar a.jar
sign b.jar

(ps 在 5.0 中有一个错误并在 5.0u1 中修复。如果需要,请升级)

于 2012-07-02T10:33:27.897 回答
1

在 WINDOWS 上不是这样。我刚刚确认了 pack200 的一个错误。

在 Windows 上,您必须运行该pack200.exe --repack命令两次。例如:

pack200.exe --repack A.jar
pack200.exe --repack B.jar A.jar
sign B.jar
pack200.exe B.pack.gz B.jar

此外,第二个 repack 必须有 2 个参数。以下序列将失败

pack200.exe --repack A.jar
pack200.exe --repack A.jar
>Skipping because already repacked: A.jar
sign A.jar
pack200.exe A.pack.gz A.jar
PACKED JAR IS STILL BAD
于 2013-05-03T03:40:42.820 回答