这是我自己的机器人卡雷尔版本。只能运行日食的看门人机器人。我的问题是当我打开并且我第一次点击运行时机器人根据代码移动。但当我试图在窗口打开时编辑代码时,当我再次单击运行按钮时它没有移动,需要再次关闭。
这是我在run方法中的源代码:
我有一个由runnable实现的janibot类然后。我通过这段代码动态创建它的实例。
Object tempJanibot = Class.forName(className).newInstance();
janibot = (Janibot) tempJanibot;
janibot.run()
其中classname是Janibot的子类,它在屏幕截图中显示了这些内容。
它成功创建了takeTurns类的实例。
但我想当我在程序运行时编辑代码时,我点击run方法,takeTurns类也必须更新,但不幸的是它不会更新,所以我需要再次关闭并单击运行按钮。
答案 0 :(得分:4)
您正在寻找的是Java类的热加载。 Java中的默认机制是在classloader
引用中加载一次类,并在需要时重新使用它。因此,当Java应用程序正在运行并且如果重新编译该类时,它将不会获取新的定义。如果您希望实现类似功能,可以查找JRebel或spring loaded等解决方案。
答案 1 :(得分:3)
"它不是一个错误,它是一个功能!" Eclipse无法在代码运行时重新编译代码,并将这些更改合并到当前正在运行的程序中。您每次都必须重新启动该程序。