"Hot code replace" не работает - Eclipse не изменяет никакого кода на JBoss
В настоящее время я испытываю проблему с "горячей заменой кода", не работающей в Eclipse Galileo и JBoss 4.2.3.
Среди других приложений я использую Java WAR в моем локальном JBoss. Проект, из которого он построен, управляется Maven. Я строю проект, используя войну целей Maven: взорвался, а затем копирую этот каталог в JBoss с помощью сценария ANT.
Когда я сейчас запускаю приложение и устанавливаю точку останова в любом месте кода, Eclipse правильно останавливается на этой строке в режиме отладки. Но когда я изменяю исходный файл и сохраняю его, Eclipse не применяет это изменение к JBoss. Например, когда я превращаю обычную строку кода в комментарий, отладчик по-прежнему переходит этот комментарий, как если бы это был обычный код Java. Или, когда я удаляю строку, кажется, что отладчик не синхронизируется с файлом и начинает переходить через круглые скобки.
Но я не получаю никакой "горячей замены кода" -messages. Мне кажется, что Eclipse применяет изменения к исходным файлам, но не применяет их к JBoss.
Есть ли какие-то особые предпочтения, которые нужно включить, чтобы заставить горячий код заменить работу? Или есть какие-то ошибки в том, как я собираю и внедряю приложение в JBoss?
Ответы
Ответ 1
Я не работал с JBoss, но у меня есть два предложения.
-
Если вы запустите свое приложение в Eclipse, используя конфигурацию запуска
Ваш флаг "Проект" - "Построить автоматически" включен? Если нет, код не компилируется и игнорируется во время выполнения.
-
Когда вы отлаживаете приложение в удаленном режиме, вы не можете изменить код, но вы можете изменить значение параметров. (Я думаю)
Ответ 2
У меня были проблемы в проекте с Maven и Eclipse. Ошибок не было, но замена горячего кода не работала. Я читал, что необходимо "Строить автоматически". Я проверил это, и он все еще не работал. У меня были некоторые ошибки в других проектах в моем пути сборки. Я считаю, что это была ошибка. Когда я исследовал, я обнаружил, что нам нужно было снять флажок "Abort build when buildpath errors". Я привел подробности в приведенной ниже ссылке.
Ответ 3
Первая проверка - это проект/сборка автоматически.
Также может потребоваться проверка конфигурации развертывания сервера приложений,
например. для JBoss, в Eclipse, в представлении "Серверы", дважды щелкните по серверу, и есть раздел "Сканеры развертывания" с двумя флажками:
- Добавить отсутствующие сканеры развертывания
- Удалите добавленные сканеры развертывания перед отключением
https://docs.jboss.org/author/display/AS7/Deployment+Scanner+configuration
Конфигурация сканера JBoss AS/развертывания
Ответ 4
Я только недавно столкнулся с этой проблемой в Eclipse 2019-06 и обнаружил, что мне пришлось снять флажок с опции "Заменить файлы классов, содержащие ошибки компиляции" в группе Preferences-> Java-> Debug- > Hot Code Replace. Все остальные варианты там были проверены. До этого я получал сообщение "Не удалось выполнить горячую замену кода - метод удаления не реализован", несмотря на то, что единственным моим изменением было задание вызова System.out.println. Как только я изменил этот параметр (в том же сеансе отладки), он начал работать для меня.