2011-06-19 13 views
47

Wygląda na to, że Intellij nie robi podstawowej wymiany kodu w mojej instalacji.Jak włączyć wymianę Intellij Hot Code

Z tego kodu:

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"); 
    } 
} 

I umieścić punkt przerwania na mainTest.method1(); następnie zmodyfikować ciąg w Method2(), naciśnij Ctrl + S i dalej krok po kroku. Niestety środowisko wykonawcze nie jest aktualizowane, drukowany jest stary ciąg. Full stop - compile - run wyświetla nowy ciąg znaków. Mój wniosek jest więc taki, że wymiana nie działa.

Czy są jakieś ustawienia, które należy ustawić, aby włączyć wymianę kodu?

  • Ubuntu, JDK 1.6
  • Intellij 10,5 Ostateczny (ocena)
+0

Nigdy nie słyszałem od hot swap dla aplikacji wiersza poleceń, tylko dla aplikacji internetowych. – duffymo

+5

Pochodzę z zaćmienia, co jest tym, czego oczekiwałbym, aby intelli1 mógł to również zrobić. Czy czegoś brakuje? –

Odpowiedz

58

Po zapisaniu klasę czekając na przerwania tylko przekompilować klasę Build -> Compile 'MainTest.java' lub naciśnij Ctrl+Shift+F9 ze standardowymi kluczowych wiązań.

IntelliJ IDEA wyświetli małe okno dialogowe z pytaniem, czy chcesz ponownie załadować tę klasę.

+3

Świetnie, dzięki. Czy mogę utworzyć kompilację intellij auto? (znacznie lepszą funkcją byłoby: zapisanie bez kompilacji auto-kompilacji, aby domyślnie włączyć kompilację na żądanie). –

+0

Zobacz http://www.jetbrains.com/idea/webhelp/reloading-classes.html i http://www.jetbrains.com/idea/webhelp/debugger-hotswap.html – joschi

+0

Wielkie dzięki, szukałem tego dużo czasu! – Simcha

4

Istnieje opcja Debugger > HotSwap w IntelliJ 11.

+2

Istnieje wtyczka "Eclipse Mode", która działa dokładnie tak samo jak kompilacja inkrementacyjna tła Eclipse. –

+1

Dobry komentarz, niestety wtyczka nie wydaje się być dłużej utrzymywana http://plugins.intellij.net/plugin/?id=3822 –

+0

intellij 12 too;) – Thermech

2

przejdź do Ustawienia -> Wybierz Debug -> HotSwap

enter image description here

+1

Nawet jeśli używam tego, nadal muszę ręcznie instruować intelliJ, aby przekompilować. To sprawia, że ​​jest trochę łatwiej, ponieważ nie musisz odpowiadać na pytanie, czy chcesz przeładować klasy. –

6

Po poniżej modyfikacji oraz umożliwienie wymiany podczas pracy, zmiany w sposób Plik Java zajęł 1-2 sekundy czasu restartu. (Początkowy czas rozpoczęcia wynosi dla mnie około 7 sekund).

Mam nadzieję poniżej metody pomaga ...


Po pierwsze, trzeba sprawdzić „Make projekt automatycznie” w menu Ustawienia.

Aby otworzyć menu preferencji;

można przejść do menu głównego i kliknąć;

IntelliJ IDEA -> Preferencje

lub można wpisać poniżej skrótu z klawiatury;

cmd,

Następnie można sprawdzić „Make projekt automatycznie” jak na rysunku poniżej;

enter image description here

Po drugie, trzeba zmodyfikować "compiler.automake.allow.when.app.running" ustawienie rejestru jako prawdziwe.

Aby otworzyć rejestr, należy kliknąć poniższy skrót klawiaturowy;

cmd przesunąć

Type "rejestru", jak w poniższym zdjęciu, wybierz "Registery" i naciśnij przycisk z klawiatury wprowadzić;

enter image description here

Po okno "Registery" otwarty, wpisz "compiler.automake" widzieć "compiler.automake.allow.when.app.running" opcję, i sprawdzić, jak w poniższym rysunku;

enter image description here

Niż, trzeba zrestartować IntelliJ do rejestru zmienia pracę.

+0

HotSwap działa dla mnie, gdy debuguję aplikację, a następnie tworzę projekt lub po prostu kompiluję plik. Jednak nie działa on przy zapisywaniu nawet po wykonaniu powyższego ustawienia rejestru. Czy to dlatego, że jestem w debugowaniu, a nie w Run? – DKroot

0

Napotkałem ten problem na Ubuntu. Miałem również pozornie niezwiązany problem, w którym IntelliJ podał błąd dotyczący limitu czasu oglądania plików (moje przeprosiny, że nie mam już dokładnego komunikatu o błędzie). Aby rozwiązać ten problem, później zrobiłem następujące czynności:

  1. Dodaj następujący wiersz do pliku albo /etc/sysctl.conf lub nowy * .conf pliku (np idea.conf) pod /etc/sysctl.d/ katalogu:

    fs.inotify.max_user_watches = 524288 
    
  2. Następnie uruchomić to polecenie, aby zastosować zmianę:

    sudo sysctl -p --system

Teraz moje komponenty React odbudowują się i wymieniają na gorąco dokładnie.

Source