Я использую 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
Может кто-нибудь предложить шаги для того, чтобы заставить это работать?
То, что вы хотите сделать, это развернуть в JBOSS как взорванная WAR . Как правило, если редактор выполняет первоначальное развертывание самостоятельно, он будет управлять копированием отдельных файлов по мере их изменения.
В IntelliJ это просто . Я никогда не делал этого из Eclipse, но этот проект - ваш лучший выбор.
Я использовал JRebel , и это спасает жизнь, позволяя изменять код и динамически обновлять сервер приложений. Окупил себя первый день. (у нас есть 7 минутный цикл компиляции / развертывания / перезапуска)
Причина в том, что в сборке может использоваться другой компилятор, поддерживающий горячую замену. Например, если вы строите проект по maven, мы использовали javac. При попытке выполнить «горячую» замену etslipse использует встроенный компилятор jdt compiler (компилятор не взят из установленного jdk и не может быть изменен обычным способом.). Полученные двоичные классы различаются, и jvm не может их заменить.
У меня была проблема, когда не работала горячая замена кода. Мы внесли некоторые изменения, например, удостоверившись, что «сборка автоматически» была отмечена, и сняв флажок «прервать сборку при возникновении ошибки пути сборки». Но в моем случае HCR сам по себе не работал. Я не получил сообщение, как вы упомянули. Более подробная информация находится по этой ссылке. https://sites.google.com/site/javaerrorsandsolutions/home/hot-code-replacement
То, что вы описали, должно работать. Каковы ваши аргументы jvm для jboss, чтобы включить отладку?
Мое это: -Xdebug -Xnoagent -Xrunjdwp: транспорт = dt_socket, адрес = 8000, сервер = y, приостановить = n