Есть ли способ патчить файлы JAR? - PullRequest
14 голосов
/ 21 февраля 2011

Предположим, я отправил кому-то большой файл с банкой или войной.Могу ли я позже просто изменить один небольшой раздел и отправить его ему?Предположим, я только что изменил один файл класса.Я перекомпилировал Java для в файл класса.Иначе, чем обменять новый файл класса на старый файл класса? Есть ли что-нибудь еще, что я должен был бы сделать?

В java нужно ли перестраивать весь файл jar / war?Кроме того, есть ли какой-нибудь пакет с открытым исходным кодом для обновления?

Ответы [ 7 ]

7 голосов
/ 21 февраля 2011

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

jar uf foo.jar foo.class

http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/jar.html

2 голосов
/ 22 февраля 2011

Существует JARDiff, предназначенный для обновления приложений Java WebStart.

2 голосов
/ 21 февраля 2011

Вы можете скопировать измененный файл .class таким способом.

jar uf test.jar com\test\Test.class

Если есть логичный способ для вас выделить ваши компоненты в отдельные файлы JAR, то я бы создал файл JAR для каждого типа компонента,Таким образом, вам не придется перераспределять все обратно клиенту.Например, посмотрите, как Spring 3 выделяет компоненты.

0 голосов
/ 22 февраля 2011

Если у вас есть старый и новый файл jar, вы можете создать оба файла xdelta и отправить только дельта-файл вашему клиенту, который должен быть намного меньше, чем весь файл jar, если вы изменилитолько один класс из многих.Это должно работать и для подписанных jar-файлов, но требует, чтобы и отправитель, и получатель имели программу xdelta (или могли ее установить).

И, конечно, сначала нужно создать новый jar (но этоможет быть сделано способами, уже упомянутыми в других ответах).

0 голосов
/ 21 февраля 2011

Просто откройте свой jar-файл с помощью 7zip и перезапишите отредактированные вами классы.Обязательно сначала сделайте резервную копию.

0 голосов
/ 21 февраля 2011

Посмотрите на использование команды jar. Опция u позволяет обновить существующий архив.

0 голосов
/ 21 февраля 2011

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

...