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. jarファイルを確認します:jarsigner -verify HelloJApplet.jarおよびjarsigner -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_Signingまたはhttp://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のバグを確認しました。

pack200.exe --repackWindowsでは、コマンドを2回実行する必要があります。例えば:

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

さらに、2番目の再パックには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 に答える