можем ли мы поставить hotifx (без сборки, просто переместите файл класса) после добавления нового метода в класс java

Мое приложение JAVA работает с последних 10 дней.

Теперь я хочу поместить файл .class в качестве исправления ошибки, в котором я представил новый метод, я не хочу выполнять сборку. Я просто помещу это как исправление в каталог классов и скину сервер.

Давным-давно я где-то читал, если мы введем новый класс / новый метод, мы не сможем поставить исправление. Если это правда, я ищу документацию для этого.

Редактировать: при поиске с использованием Term Hot-Swapping я нашел несколько интересных ссылок http://java.dzone.com/articles/reloading-java-classes-401 Ограничения горячей замены Java

Кажется, горячая замена ограничена только телами методов, у нас есть ошибка JVM для этого.

Edit2: горячая замена здесь не требуется, так как я перезапускаю сервер.


person Vipin    schedule 16.05.2014    source источник
comment
Вы говорите о горячей замене кода. Но если вы остановите-запустите сервер, это не проблема. Ваша терминология довольно неспецифична, поэтому я не знаю, что вы на самом деле имеете в виду, когда говорите о том, что нужно использовать сервер. Я могу предположить, что вы сделали опечатку и имели в виду отказ, и тогда я до сих пор не знаю, что это такое.   -  person Gimby    schedule 16.05.2014
comment
если вы подбрасываете сервер, это вообще не проблема.   -  person Frederic Close    schedule 16.05.2014
comment
@Gimby, некоторые люди используют его для описания перезапуска сервера.   -  person epoch    schedule 16.05.2014
comment
@Gimby, я исправил опечатку. Я пытаюсь найти документацию, где я прочитал некоторые ограничения этой горячей замены.   -  person Vipin    schedule 16.05.2014
comment
@Vipin да, но вы не собираетесь выполнять горячую замену. Вы собираетесь остановиться, заменить класс и затем запустить сервер/среду выполнения. Горячая замена означает замену кода в активной среде выполнения без его остановки, как это обычно делается при разработке.   -  person Gimby    schedule 16.05.2014
comment
@Gimby, вероятно, это ответ на мой вопрос, если я перезапущу сервер, мне не следует об этом беспокоиться.   -  person Vipin    schedule 16.05.2014
comment
Точно. В лучшем случае ваше приложение выйдет из строя и сгорит, потому что вы должны были обновить два класса, а не только один.   -  person Gimby    schedule 16.05.2014
comment
Несвязанный узел: также рассмотрите возможность работы на уровне jar, а не на уровне класса (компилируйте и заменяйте jar вместо отдельных классов)   -  person Puce    schedule 16.05.2014


Ответы (1)


Я создал папку с именем классы и добавил ее в путь к классам перед соответствующим файлом jar. Добавлен файл .class в папку классов в соответствии со структурой пакета и перезапущенным сервером. Поскольку загрузчик классов загружает файл класса в той последовательности, которую мы указали в пути к классам, загружается мой класс из папки классов, и мои изменения отражаются во время выполнения.

Например, если мой java-файл com.vipin.test.Test.java , я поместил Test.class в папку class/com/vipin/test.

person Vipin    schedule 11.07.2014