2011-06-19 32 views
47

Intellij似乎沒有在我的安裝上進行基本的熱代碼交換。如何啓用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"); 
    } 
} 

我把一個斷點mainTest.method1();然後修改在方法2()的字符串,然後按Ctrl + S和繼續一步一步來。不幸的是運行時沒有更新,舊的字符串正在被打印。完全停止 - 編譯 - 運行確實打印新的字符串。所以我的結論是熱插拔不​​起作用。

是否需要設置以啓用熱代碼交換?

  • Ubuntu的,JDK 1.6
  • 的IntelliJ 10.5旗艦版(評估)
+0

我從來沒有聽說過的命令行應用程序熱插拔的,僅適用於Web應用程序。 – duffymo

+5

來自日食,這是我希望intellij能夠做到這一點。我錯過了什麼嗎? –

回答

58

節省你的類,而在你的斷點等待只是重新編譯類Build -> Compile 'MainTest.java'或按Ctrl+Shift+F9與標準的按鍵綁定後。

然後,IntelliJ IDEA將顯示一個小對話框,其中會詢問您是否要重新加載該類。

+3

太好了,謝謝。我可以讓intellij自動編譯嗎? (一個更好的特性是允許:保存沒有自動編譯,然後默認打開按需編譯)。 –

+0

查看http://www.jetbrains.com/idea/webhelp/reloading-classes.html和http://www.jetbrains.com/idea/webhelp/debugger-hotswap.html – joschi

+0

非常感謝,找了這個很多時間! – Simcha

4

還有就是要設置一個Debugger > HotSwap選項的IntelliJ 11

+2

有一個「Eclipse模式」插件,它和eclipse的後臺增量編譯完全一樣。 –

+1

很好的評論,可悲的是插件似乎不再被維護http://plugins.intellij.net/plugin/?id=3822 –

+0

intellij 12太;) – Thermech

2

轉到 - >選擇調試 - >熱插拔

enter image description here

+1

即使使用這個,我仍然必須手動指示intelliJ重新編譯。這確實使它更容易一些,因爲您不必回答是否要重新加載類的問題。 –

6

如下修改和實現熱插拔後,在一個變化Java文件需要1-2秒的重啓時間。 (我的初始開始時間約爲7秒)。

我希望下面的方法可以幫助...


首先,你需要檢查偏好菜單中的「自動生成項目」。

打開首選項菜單;

你可以去頂部菜單並點擊;

的IntelliJ IDEA - >首選項

,或者你可以鍵入下面通過鍵盤快捷鍵;

CMD,

然後,您可以勾選「自動做項目」,如下圖;

enter image description here

其次,您需要修改 「compiler.automake.allow.when.app.running」 註冊表設置爲真。

要打開註冊表,您需要點擊以下鍵盤快捷鍵;

CMD移位一個

類型「註冊表」如在下面的畫面,選擇「系統登錄」,並按下輸入鍵盤的按鈕;

enter image description here

後「系統登錄」窗口打開時,類型「compiler.automake」看到「compiler.automake.allow.when.app.running」選項,並檢查它如下面圖片;

enter image description here

比,則需要重新啓動的IntelliJ使註冊表更改工作。

+0

當我調試應用程序,然後構建項目或編譯文件時,HotSwap適用於我。但是,即使在上面的註冊表設置完成後,它也不能保存。是因爲我在調試而不是運行? – DKroot

0

我在Ubuntu上遇到這個問題。我也有一個顯然無關的問題,IntelliJ給出了有關文件監視限制的錯誤(我的歉意是我不再有確切的錯誤信息)。爲了解決這個問題,後來我做了以下步驟:

  1. /etc/sysctl.d/目錄下添加以下行要麼/etc/sysctl.conf文件或一個新的* .conf文件(如idea.conf):

    fs.inotify.max_user_watches = 524288 
    
  2. 然後運行此命令以應用更改:

    須藤的sysctl -p --system

現在我的React組件重建和熱插拔就好了。

Source