"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, но у меня есть два предложения.

  1. Если вы запустите свое приложение в Eclipse, используя конфигурацию запуска

    Ваш флаг "Проект" - "Построить автоматически" включен? Если нет, код не компилируется и игнорируется во время выполнения.

  2. Когда вы отлаживаете приложение в удаленном режиме, вы не можете изменить код, но вы можете изменить значение параметров. (Я думаю)

Ответ 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. Как только я изменил этот параметр (в том же сеансе отладки), он начал работать для меня.