Как заставить Java «горячую замену кода» работать в JBoss? - PullRequest
6 голосов
/ 11 февраля 2009

Я использую JBoss 4.0.3.SP1_CP04 и подключаюсь к нему с помощью отладчика Eclipse 3.4.1, оба с использованием JDK 1.6.0_11.

Когда я делаю небольшое изменение в методе (например, изменяя «+ 1» в логике на «+ 2») и сохраняю его, я сразу же получаю диалоговое окно с сообщением об ошибке «Горячая замена кода» с ошибка "Метод удаления не реализован"

Диалоговое окно "Горячая замена кода" http://img6.imageshack.us/img6/531/hotcodereplacefailedkp6.png

Может кто-нибудь предложить шаги для того, чтобы заставить это работать?

Ответы [ 6 ]

4 голосов
/ 11 февраля 2009

То, что вы хотите сделать, это развернуть в JBOSS как взорванная WAR . Как правило, если редактор выполняет первоначальное развертывание самостоятельно, он будет управлять копированием отдельных файлов по мере их изменения.

В IntelliJ это просто . Я никогда не делал этого из Eclipse, но этот проект - ваш лучший выбор.

2 голосов
/ 12 февраля 2009

Я использовал JRebel , и это спасает жизнь, позволяя изменять код и динамически обновлять сервер приложений. Окупил себя первый день. (у нас есть 7 минутный цикл компиляции / развертывания / перезапуска)

1 голос
/ 18 июля 2012

Причина в том, что в сборке может использоваться другой компилятор, поддерживающий горячую замену. Например, если вы строите проект по maven, мы использовали javac. При попытке выполнить «горячую» замену etslipse использует встроенный компилятор jdt compiler (компилятор не взят из установленного jdk и не может быть изменен обычным способом.). Полученные двоичные классы различаются, и jvm не может их заменить.

1 голос
/ 15 июня 2011
  1. Перед запуском отладчика в Eclipse убедитесь, что все проекты в вашем рабочем пространстве обновлены (это необходимо, если код был изменен вне Eclipse, например, после получения изменений из системы управления версиями с использованием внешнего инструмента)
  2. В Java Build Path of Eclipse убедитесь, что вы не включили в состав некоторых библиотечных классов, которые вы пытаетесь выполнить горячей заменой
  3. Проверьте, что Eclipse JRE = JBoss JRE
  4. Проверьте класс, который вы пытаетесь горячей замены. Есть ли у него внутренние классы? Я просто сталкиваюсь с проблемой, когда не могу поменять класс с внутренним классом, тогда как другие классы меняются местами без проблем.
0 голосов
/ 19 ноября 2010

У меня была проблема, когда не работала горячая замена кода. Мы внесли некоторые изменения, например, удостоверившись, что «сборка автоматически» была отмечена, и сняв флажок «прервать сборку при возникновении ошибки пути сборки». Но в моем случае HCR сам по себе не работал. Я не получил сообщение, как вы упомянули. Более подробная информация находится по этой ссылке. https://sites.google.com/site/javaerrorsandsolutions/home/hot-code-replacement

0 голосов
/ 12 февраля 2009

То, что вы описали, должно работать. Каковы ваши аргументы jvm для jboss, чтобы включить отладку?

Мое это: -Xdebug -Xnoagent -Xrunjdwp: транспорт = dt_socket, адрес = 8000, сервер = y, приостановить = n

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...