2010-08-31 2 views
6

Я использую функцию отладки Java с возможностью горячей замены с помощью веб-приложения на Tomcat. После некоторого изменения подписи класса я получил диалоговое окно Eclipse «Hot Code Replace Fail» - я это понимаю.Eclipse Hot Code Заменить Fail - переиздать веб-приложение

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

Есть ли способ сказать отладчику, что новая версия класса уже перезагружена в новом загрузчике классов webapp и что она сохраняется для продолжения?

Спасибо.

ответ

2

Почему бы вам не попробовать JRebel? JRebel - это Java-агент JVM, который интегрируется с серверами приложений, делая классы перезагружаемыми с помощью существующих загрузчиков классов. Только измененные классы перекомпилируются и мгновенно перезагружаются в запущенном приложении. JRebel подключается к IDE и системам сборки. Классы и статические ресурсы загружаются прямо из рабочего пространства. http://zeroturnaround.com/software/jrebel/

С уважением, Andrea

0

Существует старая проекта PHD. Парень, который его сделал, был принесен Oracle, но его работа не попала на Java 8 и, надеюсь, будет видна в Java 9, но, скорее всего, будет в Java 10. Существует новая версия этого для Java 8, я думаю. Я еще не пробовал.

Мой первоначальный вопрос для получения дополнительной информации: Advanced Code Hot Swapping in JDK 8?

И страница проекта на Github: https://github.com/dcevm/dcevm

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

0

Пробовал ли вы Параметры сервера - Подавать модули без публикации вместе с публикацией?

Server Options
Publishing

Также не уверен, что вы говорите о других приложениях.

+0

Вы правы: на этом экране вы можете изменить параметр, чтобы автоматически отражать изменения в сервере без перезапуска, но это не тот, который вы сказали. Он находится в разделе публикации, изменяясь от никогда не публиковаться, чтобы автоматически публиковать при изменении ресурсов. –

+0

Обратите внимание, что опция «Подавать модули без публикации» –

+0

Я, хотя это было только для ресурсов внутри папки WebContent, а не для классов Java –