2014-11-28 4 views
1

Это моя собственная версия karel the Robot. Робот Janitor, который может запускать только затмение. Моя проблема заключается в том, когда я открываю и я запускаю первый запуск робота в соответствии с кодами. но когда я попытался отредактировать коды, пока окно открыто, когда я снова нажимаю кнопку запуска, он не перемещается и ему нужно снова закрыть.Сохранение исходного кода во время работы в java

Это мой исходный код в методе выполнения:

У меня есть класс janibot, который реализуется с помощью работоспособной, а затем. и я создаю его экземпляр динамически с помощью этого кода.

Object tempJanibot = Class.forName(className).newInstance(); 
janibot = (Janibot) tempJanibot; 
janibot.run() 

где classname является подклассом Janibot, который принимает изображения на скриншотах.

Он успешно создал экземпляр класса takeTurns.

Но я подумал, что когда я редактирую код во время работы программы, и я нажимаю метод запуска, класс takeTurns также должен быть обновлен, но, к сожалению, он не будет обновляться, поэтому мне нужно снова закрыть его и нажать кнопку запуска.

enter image description here

ответ

4

Что вы ищете, это горячая загрузка класса Java. Механизм по умолчанию в Java - это загрузка класса один раз в classloader и повторное использование его при необходимости. Поэтому, пока приложение Java запущено, и если класс перекомпилирован, он не получит новое определение. Если вы хотите достичь аналогичной функциональности, вы можете искать решения, такие как JRebel или spring loaded.

+0

можете ли вы привести пример? – user3276091

+0

спасибо! пружина решает мою проблему – user3276091

+0

Извините @ user3276091 не может представить пример, но я рад, что это помогло. Счастливое кодирование. :) – CuriousMind

3

"Это не ошибка, это особенность!" Eclipse не может перекомпилировать ваш код во время его запуска и объединить эти изменения в вашу текущую программу. Вы должны будете перезапустить программу каждый раз.

Смежные вопросы