Горячая замена кода в классах, содержащих вложенные классы

Я пытаюсь динамически применять изменения кода к приложению Java, которое я отлаживаю с помощью Eclipse. Все работает как положено для всех классов, кроме одного. После внесения любых незначительных изменений и сохранения их я получаю сообщение об ошибке, говорящее Hot Code Replace Failed - add method not implemented.

На данный момент я обнаружил, что в отличие от других, мой проблемный класс содержит (анонимные и явные) вложенные классы. Как следствие, сборка моего приложения приводит к созданию более одного файла .class; один для основного класса и дополнительный для каждого внутреннего класса. Я очень подозреваю, что это причина неудачной попытки замены кода.

TL;DR: Есть ли какой-нибудь способ выполнить горячую замену кода в классах, содержащих внутренние/вложенные классы?


person Cedric Reichenbach    schedule 05.09.2015    source источник
comment
Горячая замена кода не является нормальной функцией. С вложенными классами классы должны быть исправлены в группе. Еще не реализовано   -  person Joop Eggen    schedule 05.09.2015


Ответы (2)


Взгляните на Агент горячей замены:

  • Поддержка фреймворка — Spring, Hibernate, Logback, Jetty, Tomcat, JSF, ...
  • Документация по настройке DCEVM и предварительно скомпилированных двоичных файлов для Java 1.7, 1.8
  • Загружать классы/подклассы и ресурсы из разных мест (разрешить перезагрузку классов из зависимого проекта)
  • С открытым исходным кодом и бесплатно
person skybber    schedule 08.09.2015

Вы не можете заменить горячую замену кода, если вы измените схему класса

см. в отладчике Eclipse, какие изменения можно заменить горячим кодом в работающей JVM?

person flafoux    schedule 05.09.2015
comment
Я не меняю схему занятий. Как я уже сказал в своем ответе, любые незначительные изменения, даже добавление или удаление некоторых пробелов, не удается. - person Cedric Reichenbach; 05.09.2015
comment
Поскольку это вложенный класс, он должен регенерировать синтетический метод, поэтому, я думаю, изменив его схему - person flafoux; 05.09.2015