2012-08-15 46 views
0

我一直在试图玩弄在Eclipse中热交换进行Java代码的Java代码热交换,但我不知道是什么的局限性和在Eclipse中热交换进行Java代码的规则,所以我的努力​​经常失败。如果任何人都可以提供关于如何在Eclipse中热切换代码的​​相对详细的解释或者将我链接到一个非常棒的代码。如何启用在Eclipse

例如,这个代码hotswaps如果我改变的u值:

public class apples extends tuna { 

    public static void main(String[] args) throws InterruptedException { 
     while (true) { 
      ddop(); 
      Thread.sleep(1000); 
     } 
    } 

    public static void ddop() { 
     int u = 3; 
     System.out.println(u); 
    } 
} 

但是这个代码不:

public class apples extends tuna { 
    static int u; 
    public static void main(String[] args) throws InterruptedException { 
     int u = 3; 
     while (true) { 
      System.out.println(u); 
      Thread.sleep(1000); 
     } 
    } 
} 

谁能提供一个解释,为什么?是的,我确实有“自动构建”标志,并且正在调试模式下运行。

+0

来到这里。如何使用[DCEVM](https://dcevm.github.io/)? – KrishPrabakar 2015-03-02 11:25:35

回答

1

我不是100%确定上面的例子,但总的来说规则是你不能改变一个类的接口。例如,添加矿除去方法,改变方法签名,添加/移除静态字段等

1

相信为了热插拔的方法的源,其方法必须在调用堆栈。在第一个示例中,更改的方法被重复调用,而在第二个示例中,该方法被调用一次,然后才执行代码循环。如果代码在方法已经运行后发生变化,那么该方法不会再次进入调用堆栈,并且无法获取代码更改。