Gestern bin ich von Eclipse zu IntelliJ IDEA gewechselt.
Ich verwende JRebel auch mit WebSphere Server 7.
Jetzt scheint alles einwandfrei zu funktionieren, außer dass IntelliJ die Datei nicht neu kompiliert , wenn ich eine Java-Datei ändere und auf Speichern drücke, damit JRebel sie abholt.
Die Eclipse-Funktion " Automatisch erstellen " hat dieses Problem behoben.
In IntelliJ IDEA muss ich CTRL+ SHIFT+ 9drücken, um die relevante Klasse neu zu kompilieren, damit JRebel sie abholen kann. Wenn Änderungen an zwei Dateien vorgenommen werden , muss ich dies für jede einzelne Datei tun. Da IntelliJ den Mechanismus zum Speichern aller Dateien verwendet, ist es ziemlich schwierig zu wissen, was manuell neu kompiliert werden soll, was mich auch nicht wirklich interessiert.
Gibt es nicht eine Möglichkeit, IntelliJ dazu zu bringen, dies selbst zu tun ?
Ctrl
+F9
? Dadurch wird das gesamte Projekt erstellt. Wenn sich nur zwei Dateien geändert haben, werden diese neu erstellt.Antworten:
AKTUALISIERT
Für IntelliJ IDEA 12+ -Versionen können wir die bearbeiteten Quellen automatisch erstellen, wenn wir die externe Compileroption verwenden. Sie müssen lediglich die Option " Projekt automatisch erstellen " unter " Compiler " -Einstellungen aktivieren:
Wenn Sie während der Ausführung der Anwendung eine Hot-Bereitstellung durchführen möchten oder wenn Sie Spring-Boot-Devtools verwenden, sollten Sie auch die From-
compiler.automake.allow.when.app.running
Registrierung aktivieren . Dadurch werden Ihre Änderungen automatisch kompiliert.Verwenden Sie Ctrl+ Shift+ A(oder ⌘+ Shift+ Aauf dem Mac),
Registry
sobald das Registrierungsfenster geöffnet ist, suchen und aktivieren Sie escompiler.automake.allow.when.app.running
, siehe hier:Bei Versionen älter als 12 können Sie das EclipseMode- Plugin verwenden, damit IDEA die gespeicherten Dateien automatisch kompiliert.
Weitere Tipps finden Sie im Handbuch "Migration von Eclipse zu IntelliJ IDEA" .
quelle
Bitte folgen Sie beiden Schritten:
1 - Aktivieren Sie Automake über den Compiler
make project automatically
Make Project automatically
Funktion2 - Aktivieren Sie Automake, wenn die Anwendung ausgeführt wird
Registry
compiler.automake.allow.when.app.running
und aktivieren Sie ihn oder aktivieren Sie das Kontrollkästchen danebenHinweis: Starten Sie Ihre Anwendung jetzt neu :)
Hinweis: Dies sollte auch ein Live-Reload mit Spring Boot Devtools ermöglichen.
quelle
WARNUNG
Das Eclipse-Modus- Plug-In ist veraltet und nicht mit den neuesten IDEA 12+ Builds kompatibel. Wenn Sie es installieren, bleibt die IDE bei jeder Dateiänderung hängen und reagiert extrem langsam.
IntelliJ IDEA verwendet keine automatische Erstellung, sondern erkennt Fehler im laufenden Betrieb und nicht über den Compiler. Ähnlich wie im Eclipse-Modus wird es in IDEA 12 verfügbar sein :
Verwenden Sie
Build
|Make
ruft den inkrementellen Erstellungsprozess auf, der nur geänderte und abhängige Dateien kompiliert (sehr schnell).Es gibt auch einen FAQ-Eintrag , der helfen kann.
Update für die automatische Make-Funktion : Wenn die Run / Debug-Konfiguration ausgeführt wird,
Make project automatically
hat dies keine Auswirkungen. Klassen auf der Festplatte ändern sich nur aufBuild
|Make
. Dies ist die zentrale Entwurfsentscheidung, da unserer Meinung nach Klassenänderungen auf der Festplatte immer unter der Kontrolle des Benutzers stehen sollten. Das automatische Erstellen ist nicht der Nachahmer der Eclipse-Funktion, es funktioniert anders und es dient hauptsächlich dazu, Zeit zu sparen, bis die Klassen bereit sind, wenn sie wirklich benötigt werden (bevor die App oder die Tests ausgeführt werden). Das automatische Erstellen ersetzt nicht die explizite Kompilierung, die Sie noch auslösen müssen, wie in dem in dieser Frage beschriebenen Fall. Wenn Sie nach einem anderen Verhalten suchen, ist das in den obigen FAQ verlinkte EclipseMode-Plug-In die bessere Wahl.quelle
Sie können eine Keymap
ctrl+s
zum Speichern UND Kompilieren in einem Schritt erstellen. Gehen Sie zu den Keymap-Einstellungen und suchen Sie nachCompile
.quelle
Es gibt eigentlich keinen Unterschied, da beide 1 Klick erfordern:
Die einfachste Lösung besteht darin, sich daran zu gewöhnen. Denn wenn Sie den größten Teil Ihres Tages in Ihrer IDE verbringen, sollten Sie schnell schnelle Gewohnheiten in einer haben als langsame Gewohnheiten in mehreren von ihnen.
quelle
Am Ende habe ich ein Makro aufgenommen , um es in einem Schritt zu speichern, zu kompilieren und eine Keymap
Ctrl+s
zu erstellen .quelle
Ich habe es geschafft, dies mit Makros zu lösen.
Ich habe angefangen, ein Makro aufzunehmen:
Nennen Sie es etwas Nützliches wie "SaveAndMake".
Entfernen Sie jetzt einfach die Option Alle Tastenkombinationen speichern und fügen Sie Ihrem Makro dieselbe Tastenkombination hinzu!
Jedes Mal, wenn ich speichere, wird eine schmutzige Kompilierung gespeichert und durchgeführt, und jRebel erkennt jetzt alle Änderungen korrekt.
quelle
Bitte befolgen Sie diese Schritte sorgfältig, um es zu aktivieren.
1) Erstellen Sie ein Spring Boot-Projekt mit SB V1.3 und fügen Sie "Devtools" (1 *) zu den Abhängigkeiten hinzu
2) Rufen Sie Help-> Find Action ... auf und geben Sie "Registry" ein. Suchen Sie im Dialogfeld nach "automake" und aktivieren Sie den Eintrag " compiler.automake.allow.when.app.running ". Schließen Sie das Dialogfeld
3) Aktivieren Sie die Hintergrundkompilierung unter Einstellungen-> Erstellen, Ausführen, Bereitstellen-> Compiler "Projekt automatisch erstellen".
4) Öffnen Sie die Spring Boot Run-Konfiguration. Sie sollten eine Warnmeldung erhalten, wenn alles richtig konfiguriert ist
5) Führen Sie Ihre App aus und ändern Sie Ihre Klassen im laufenden Betrieb
Bitte melden Sie Ihre Erfahrungen und Probleme als Kommentare zu diesem Problem.
Klicken Sie hier für weitere Informationen
quelle
Das einzige, was für mich in meinem Maven-Projekt, das davon betroffen war, funktioniert hat, ist, der Laufkonfiguration meiner Unit-Tests ein "Test-Compile" -Ziel hinzuzufügen. Unglaublich ungeschickte Lösung, aber es funktioniert.
quelle
Intellij schlägt leise fehl, wenn ein Kompilierungsproblem in einem anderen Modul auftritt und dann keine automatische Erstellung durchgeführt wird. Überprüfen Sie also Ihr
Problems
Fensterquelle
Ich hatte das gleiche Problem. Ich habe den "Energiesparmodus" verwendet, der verhindert, dass inkrementell kompiliert wird und Kompilierungsfehler angezeigt werden.
quelle
Verwenden Sie das Plugin "Neuformatieren und Kompilieren" (inspiriert vom Plugin "Aktionen speichern" von Alexandre DuBreuil):
https://plugins.jetbrains.com/plugin/8231?pr=idea_ce
Im Moment biete ich nur eine JAR-Datei an, aber dies ist der wichtigste Teil des Codes:
quelle
Bearbeiten Sie Ihre Run / Debug-Konfiguration so, dass vor dem Start die Option Erstellen ausgewählt ist
Die Option Nach dem Erstellen ist ausgewählt
Die obige Lösung hat bei der Arbeit an meiner JBehave-Testsuite für mich funktioniert
quelle
Es hat bei mir nicht funktioniert, weil ich ein unnötiges Modul in meiner Projektstruktur hatte. Die Tests wurden vermutlich mit dem anderen Modul durchgeführt.
Ich weiß nicht, wie es dazu kam, aber das Entfernen löste das Problem.
Stellen Sie sicher, dass Ihre Run / Debug-Einstellungen das Modul verwenden, das Sie mit der automatischen Speicherung erstellen.
ZB: siehe Modul in
Sie können die Module in Projektstruktur - Module ändern
quelle
Ich hatte das gleiche Problem. Ich denke, es wäre angebracht zu prüfen, ob Ihre Klasse kompiliert werden kann oder nicht. Klicken Sie auf Neukompilieren (standardmäßig Strg + Umschalt + F9). Wenn es nicht funktioniert, müssen Sie untersuchen, warum es nicht kompiliert wird.
In meinem Fall wurde der Code nicht automatisch kompiliert, da beim Kompilieren versteckte Fehler aufgetreten sind (sie wurden nirgendwo in Protokollen angezeigt und die Neuinstallation von Maven funktionierte). Die Grundursache war eine falsche Projektstruktur -> Modulkonfiguration, sodass Intellij Idea sie nicht gemäß dieser Konfiguration erstellen konnte.
quelle
Ich hatte das gleiche Problem und auch ein Problemdateisymbol in Intellij, also entfernte ich den
.idea
Ordner und importierte das Projekt, um mein Problem zu beheben .quelle
Ich habe eine Fehlermeldung erhalten: Einige Gläser befinden sich nicht im Klassenpfad. Also lösche ich einfach das beschädigte Glas und führe die folgenden Schritte aus
quelle
Nicht genug Punkte, um eine vorhandene Antwort zu kommentieren, aber ähnlich wie bei einigen der oben genannten Personen habe ich nur ein Makro und eine Keymap hinzugefügt, um Importe zu organisieren / Formatieren / SpeichernAll / FastReload (F9) / Synchronisieren .
Die Synchronisierung wird hinzugefügt, da dies die einzige Möglichkeit zu sein scheint, Aktualisierungen in Ressourcen zu sehen, die von externen Build-Tools / Beobachtern (dh Webpack) geändert wurden.
Der Prozess ist langsamer als Eclipse - und für die externe Dateiaktualisierung muss der Befehl häufig mehrmals ausgeführt werden - aber ich kann damit leben.
quelle