Это моя собственная версия karel the Robot. Робот Janitor, который может запускать только затмение. Моя проблема заключается в том, когда я открываю и я запускаю первый запуск робота в соответствии с кодами. но когда я попытался отредактировать коды, пока окно открыто, когда я снова нажимаю кнопку запуска, он не перемещается и ему нужно снова закрыть.
Это мой исходный код в методе run:
У меня есть класс janibot, который реализуется с помощью runnable и затем. и я создаю его экземпляр динамически с помощью этого кода.
Object tempJanibot = Class.forName(className).newInstance();
janibot = (Janibot) tempJanibot;
janibot.run()
где classname - это подкласс Janibot, который принимает значения на скриншотах.
Он успешно создал экземпляр метода takeTurns.
Но я подумал, что когда я редактирую код во время работы программы, и я нажимаю метод запуска, должен также обновляться класс takeTurns, но, к сожалению, он не будет обновляться, поэтому мне нужно снова закрыть его и нажать кнопку запуска.
То, что вы ищете, - это горячая загрузка класса Java. Механизм по умолчанию в Java - это загрузка класса один раз в ссылку на classloader
и повторное использование его при необходимости. Поэтому, пока приложение Java запущено, и если класс перекомпилирован, он не получит новое определение. Если вы хотите достичь аналогичной функциональности, вы можете искать решения, такие как JRebel или подпружиненные.
"Это не ошибка, это особенность!" Eclipse не может перекомпилировать ваш код во время его запуска и объединить эти изменения в вашу текущую программу. Вы должны будете перезапустить программу каждый раз.