实时代码编译?

时间:2012-02-17 20:53:27

标签: java eclipse

我正在http://www.humblebundle.com观看直播,我看到他们在运行应用程序,并在Eclipse中更改了代码。这只是下次编译和运行时的更改,还是他实际上正在以某种方式运行应用程序?

5 个答案:

答案 0 :(得分:3)

有时。 在调试模式下,eclipse可以在正在运行的JVM中编译和更改类文件,这称为热代码替换

  

您的想法是可以在给定的运行时启动调试会话   工作台并更改开发工作台中的Java文件,以及   调试器将替换接收VM中的代码   运行。不需要重新启动,因此引用“hot”。

来源:Eclipse Wiki

在某些情况下这不起作用,在这种情况下Eclipse会提示您重新启动。 Hot code replace failed

答案 1 :(得分:1)

这称为hot code replace

  

您的想法是,您可以在给定的运行时工作台上启动调试会话并更改开发工作台中的Java文件,调试器将在运行时替换接收VM中的代码 。不需要重启,因此引用“热”。

答案 2 :(得分:1)

从流中说出来是不可能的。 Java在某种程度上具有这种能力 - 您可以通过一些限制,使用调试器替换JVM加载的类。还有JRebel,它摆脱了大量的限制。

答案 3 :(得分:0)

运行时更改应用程序代码的能力是调试器的功能。在Eclipse和许多其他流行的IDE中,它“开箱即用”。功能有几个限制:无法更改方法签名,添加/删除类成员等。

答案 4 :(得分:0)

如果处于调试模式,则可以在应用程序运行时进行某些更改。它是否有效取决于更改是否是当前加载的代码。例如,您可以在程序未排序时更改排序功能,并在下次排序时使用新代码。