2012-07-02 4 views
1

У меня возникла проблема при попытке загрузить сжатую банку с помощью pack200. Я обнаружил ошибку, что мой файл jar не может быть проверен после использования unpack200.Проверить ошибку после использования unpack200

Вот сценарий:

  1. Создание хранилища ключей keytool -keystore key -genkey -alias hj
  2. Подписать баночка jarsigner -keystore key HelloJApplet.jar hj
  3. Сжать что банку файл: pack200 HelloJApplet.jar.pack.gz HelloJApplet
  4. распаковывать и переименовывать: unpack200 HelloJApplet.jar.pack.gz HelloJAppletUnpack.jar
  5. Проверьте банки: 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

Чтобы подписать банку pack200, вам необходимо упаковать + распаковать (то есть переупаковать), подписать и снова упаковать. см http://wiki.eclipse.org/Pack200#Compression_and_Signing или http://www.java.net/node/679859

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

(приписка была ошибка в 5.0 и фиксируется в 5.0u1. обновление в случае необходимости)

+0

Это сработало. Как проверить версию пакета2002? И как это сделать? – Crazenezz

+0

нет, '--repack' один раз по дизайну. (дважды переупаковка была исправлена ​​ошибка) –

1

Не случай на WINDOWS. Я только что подтвердил ошибку с пакетом200.

В 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 

Кроме того, вы должны иметь 2 аргумента для второго переукладки. Следующая последовательность будет FAIL:

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