如何启用Intellij热门代码交换

Max*_*ler 68 intellij-idea hotswap

Intellij似乎没有在我的安装上进行基本的热代码交换.

对于此代码:

public class MainTest {
    public void method1() {
        System.out.println("Breakpoint here");
    }

    public void method2() {
        System.out.println("Line that will get 24 modified");
    }

    public static void main(String[] args) {
        System.out.println("First print here");
        MainTest mainTest = new MainTest();
        mainTest.method1();
        mainTest.method2();
        System.out.println("Line that I do not modify");
    }
}
Run Code Online (Sandbox Code Playgroud)

mainTest.method1();在断开点然后在method2()处修改字符串,点击ctrl + s并继续一步一步.遗憾的是,运行时未更新,正在打印旧字符串.完全停止 - 编译 - 运行会打印新字符串.所以我的结论是热插拔不​​起作用.

是否需要设置任何设置才能启用热码交换?

  • Ubuntu,JDK 1.6
  • Intellij 10.5 Ultimate(评估版)

jos*_*chi 85

在等待断点的同时保存您的课程后,只需重新编译您的课程Build -> Compile 'MainTest.java'或按Ctrl+Shift+F9标准键绑定.

然后,IntelliJ IDEA将显示一个小对话框,询问您是否要重新加载该类.

  • 十分感谢.我可以进行intellij自动编译吗?(一个更好的功能是允许:在没有自动编译的情况下保存,然后默认启用按需编译). (5认同)
  • 请参阅http://www.jetbrains.com/idea/webhelp/reloading-classes.html和http://www.jetbrains.com/idea/webhelp/debugger-hotswap.html (2认同)
  • 非常感谢,找了好久! (2认同)

Ber*_*erk 14

在进行以下修改并启用热交换后,Java文件中的更改需要1-2秒的重新启动时间.(对我来说,初始开始时间约为7秒).

我希望以下方法有帮助......


首先,您需要在首选项菜单中选中"自动生成项目".

打开首选项菜单;

你可以转到顶部菜单然后点击;

IntelliJ IDEA - >首选项

或者您可以通过键盘输入以下快捷方式;

cmd +选项+ s

然后,您可以查看Make project automatically如下图所示;

在此输入图像描述

其次,您需要将compiler.automake.allow.when.app.running注册表设置修改为true.

要打开注册表,您需要单击下面的键盘快捷方式:

cmd + shift + a

键入registry如下图所示,选择Registry,然后按键盘输入键;

在此输入图像描述

Registry打开窗口后,键入compiler.automake查看compiler.automake.allow.when.app.running选项,并在下图中查看;

在此输入图像描述

然而,您需要重新启动IntelliJ以使注册表更改起作用.

  • 当我调试应用程序然后构建项目或只是编译文件时,HotSwap对我有用.但是,即使在上面的注册表设置完成后,它也无法保存.是因为我在调试而不是运行? (2认同)
  • @DKroot,是的 - 在 IntelliJ 中,您必须处于调试模式才能使热插拔工作。 (2认同)

Yas*_*ary 9

转到设置 --> 选择调试 --> 热插拔

在此输入图像描述

  • 即使使用这个我仍然必须手动指示 intelliJ 重新编译。这确实使它变得更容易一些,因为您不必回答是否要重新加载类的问题。 (3认同)

Raj*_*uka 8

我想你问的是这个

  1. 右键单击您的 java 类
  2. 选择编译并重新加载文件


Pra*_*oya 6

Debugger > HotSwapintellij 11中有一个选项.

  • 在intellij 13中使用:文件 - >设置 - >(在搜索字段中输入HotSwap) (3认同)
  • 有一个"Eclipse Mode"插件,它的工作方式与eclipse的后台增量编译完全相同. (2认同)
  • 很好的评论,遗憾的是该插件似乎不再维护http://plugins.intellij.net/plugin/?id=3822 (2认同)

Gil*_*ili 6

我希望每次保存 Java 文件时热交换都能自动运行。其他答案都没有这样做,所以我只是:

  1. 创建了一个将在保存时运行的宏:https ://stackoverflow.com/a/5581992/14731
  2. 添加Action: Hotswap在宏末尾 ( Run -> Reload Changed Classes)