Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Eclipse中启用java代码热交换_Java_Eclipse_Hotswap - Fatal编程技术网

如何在Eclipse中启用java代码热交换

如何在Eclipse中启用java代码热交换,java,eclipse,hotswap,Java,Eclipse,Hotswap,我一直在尝试在Eclipse中使用热交换Java代码,但我不知道Eclipse中热交换Java代码的限制和规则是什么,所以我的努力经常失败。如果有人能提供一个关于如何在Eclipse中热交换代码的相对详细的解释,或者将我链接到一个,那就太好了 例如,如果我更改u的值,此代码将进行热交换: public class apples extends tuna { public static void main(String[] args) throws InterruptedExceptio

我一直在尝试在Eclipse中使用热交换Java代码,但我不知道Eclipse中热交换Java代码的限制和规则是什么,所以我的努力经常失败。如果有人能提供一个关于如何在Eclipse中热交换代码的相对详细的解释,或者将我链接到一个,那就太好了

例如,如果我更改
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);
        }
    }
}

有人能解释一下原因吗?是的,我确实选中了“build automatically”标志,并且正在调试模式下运行。

我不能100%确定上面的示例,但一般来说规则是不能更改类的接口。例如,添加或删除方法、更改方法签名、添加/删除静态字段等。

我认为为了热交换方法的源,该方法必须在调用堆栈中。在第一个示例中,已更改的方法被重复调用,而在第二个示例中,该方法被调用一次,然后才执行代码循环。如果该方法运行后代码发生更改,则该方法将不再位于调用堆栈中,并且无法获取代码更改。

此处来得晚。使用如何?