1

У меня есть файл example.jar. Я пытаюсь обновить файл класса в банке. когда я упаковываю файл класса с помощью утилиты jar или zip (командная строка-linux)

Я старался :

jar uf мой MyJarFile.jar MyclassFile.class

zip -u мой MyJarFile.jar MyclassFile.class

Я получаю некоторую контрольную сумму, предположим, XXYYZZ.

Но когда я упаковываю один и тот же файл класса в Windows, используя 7zip(GUI), я получаю другую контрольную сумму, скажем MMNNOO. Это из-за изменения степени сжатия.Я имею в виду размер также отличается.

Теперь мой вопрос: как мне добиться такой же степени сжатия, то есть той же контрольной суммы.

РЕДАКТИРОВАТЬ 1: я пробовал банку на обеих платформах. оба выдают разные cksum ... :(

1 ответ1

3

Контрольная сумма - это хэш всех битов, содержащихся в файле.

В Windows и Linux/UNIX используются разные окончания файлов, поэтому создание контрольной суммы в каждой ОС с помощью одного и того же инструмента всегда приводит к разным контрольным суммам, если только вы не изменили окончание строки.

Чтобы проверить, есть ли у вас такая же степень сжатия, посмотрите на размер файла.

Может быть немного отличается, но оно должно быть минимальным.

Смысл контрольных сумм заключается не в том, чтобы увидеть, совпадают ли 2 файла, созданные в разное время или в разных местах, а в том, чтобы проверить, изменил ли кто-то или что-то файл.

Если бы я должен был отправить вам почтовый индекс, я мог бы проверить его по электронной почте, а затем отправить вам почтовый индекс и контрольную сумму, которую я создал.

Вы получили почтовый индекс, снова отправили контрольную сумму, и, если контрольные суммы совпадают, файл не изменился с тех пор, как я его отправил.

РЕДАКТИРОВАТЬ - я предполагаю с этим ответом, что JAR был скомпилирован и упакован в Linux, а также скомпилирован и упакован в Windows

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .