Как добавить классы компиляции в существующий jar? - PullRequest
0 голосов
/ 12 марта 2011

Мне нужно исправить систему в работе, однако я уже изменил основной транк в CVS.Поскольку изменений много, я не хочу возвращать код к предыдущей версии, так как задействован только один класс.

Можно ли это сделать?

  1. Остановить приложение.
  2. Безопасно заменить отредактированный * .class в существующую банку.
  3. ПовторноЗапустите приложение.

Большое спасибо

Ответы [ 2 ]

4 голосов
/ 12 марта 2011

Если банки не подписаны кем-то еще, это может быть сделано. В конце концов, JAR-файлы - это просто zip-файлы, вы их распаковываете, заменяете и снова архивируете. Если банки подписаны и у вас есть ключ, вы должны снова подписать новую банку. (Команда jar является предпочтительным способом сделать это.)

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

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

Это занимает около десяти минут (плюс время компиляции), и это безопасный и правильный метод. Вы можете запустить исправленное приложение в своей тестовой среде, проверить его работоспособность и только затем развернуть.

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

0 голосов
/ 12 марта 2011

Да, вы очень хорошо можете. убедитесь, что ваш новый класс хорошо скомпилирован, а затем обновите jar. jar -u - это то, что вы ищете.

...