Intellij ne semble pas effectuer d’échange de code à chaud de base sur mon installation.
Pour ce code:
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");
}
}
Je mets un point d'arrêt sur mainTest.method1();
puis modifie la chaîne à method2 (), appuie sur ctrl + s et continue à l'étape par étape. Malheureusement, le moteur d'exécution n'est pas mis à jour, l'ancienne chaîne est en cours d'impression. Arrêt complet - compilation - exécution imprime la nouvelle chaîne. Donc, ma conclusion est que le remplacement à chaud ne fonctionne pas.
Dois-je définir des paramètres pour activer l'échange de code à chaud?
Après avoir enregistré votre classe en attendant votre point d'arrêt, recompilez simplement votre classe avec Build -> Compile 'MainTest.Java'
ou appuyez sur Ctrl+Shift+F9
avec les raccourcis clavier standard.
IntelliJ IDEA affiche ensuite une petite boîte de dialogue dans laquelle il vous est demandé si vous souhaitez recharger cette classe.
Après les modifications ci-dessous et l'activation de l'échange à chaud, une modification dans un fichier Java a pris 1 à 2 secondes de temps de redémarrage. (Le temps de démarrage initial est d'environ 7 secondes pour moi).
J'espère que la méthode ci-dessous aide ...
Vous devez d’abord cocher «Créer un projet automatiquement» dans le menu Préférences.
Pour ouvrir le menu de préférences;
vous pouvez aller au menu du haut et cliquer;
IntelliJ IDEA -> Préférences
ou vous pouvez taper ci-dessous le raccourci clavier;
cmd + option + s
Ensuite, vous pouvez vérifier Make project automatically
comme dans l'image ci-dessous;
Deuxièmement, vous devez modifier le paramètre de registre compiler.automake.allow.when.app.running
en tant que vrai.
Pour ouvrir le registre, vous devez cliquer sur le raccourci clavier ci-dessous:
cmd + shift + a
Tapez registry
comme dans l'image ci-dessous, sélectionnez Registry
et appuyez sur le bouton Entrée du clavier;
Une fois la fenêtre Registry
ouverte, saisissez compiler.automake
pour afficher l’option compiler.automake.allow.when.app.running
, puis cochez-la comme indiqué dans l’image ci-dessous;
Ensuite, vous devez redémarrer IntelliJ pour que les modifications du registre fonctionnent.
Il y a une option Debugger > HotSwap
dans intellij 11.
J'ai rencontré ce problème sur Ubuntu. J'ai également eu un problème apparemment non lié dans lequel IntelliJ a donné une erreur concernant la limite de surveillance des fichiers (toutes mes excuses, je n'ai plus le message d'erreur exact). Pour résoudre ce problème, j'ai suivi les étapes suivantes:
Ajoutez la ligne suivante au fichier /etc/sysctl.conf
ou à un nouveau fichier * .conf (par exemple, idea.conf
) sous le répertoire /etc/sysctl.d/
:
fs.inotify.max_user_watches = 524288
Puis exécutez cette commande pour appliquer le changement:
Sudo sysctl -p --system
Maintenant, mes composants React sont reconstruits et remplacés à chaud.
Je voulais que Hotswap soit exécuté automatiquement à chaque fois que je sauvegardais un fichier Java. Aucune des autres réponses ne l'a fait alors j'ai juste:
Action: Hotswap
à la fin de la macro (Run -> Reload Changed Classes
)