Kann Eclipse Ressourcen automatisch aktualisieren?

160

Eclipse (3.4.2 mit PyDev) behandelt nicht synchronisierte Ressourcen (Dateien, die außerhalb der IDE bearbeitet wurden) anders als andere von mir verwendete IDEs, bei denen nur Ressourcen mit geöffneten Editoren als nicht synchron betrachtet werden . In Eclipse kann jede Ressource nicht mehr synchron sein.

Das heißt, wenn ich eine Suche durchführe, nachdem sich eine Datei außerhalb von Eclipse geändert hat, wird ein Fehlerdialog angezeigt, in dem mir mitgeteilt wird, dass Dateien nicht synchron sind, auch wenn keine Editoren geöffnet sind. Soweit ich das beurteilen kann, gibt es keinen globalen Aktualisierungsbefehl. Daher muss ich die Projektnamen (ich habe mehrere Projekte) im Fehlerdialog lesen und für jedes einen Rechtsklick + Aktualisieren ausführen.

Ich habe die Refresh AutomaticallyEinstellung eingecheckt Settings > General > Workspace, aber das hat keine Auswirkung. Gibt es eine Möglichkeit, Eclipse dazu zu bringen, immer nur nicht aktive Ressourcen von der Festplatte zu laden?

DNS
quelle
Die aktuelle Antwort für Eclipse 3.7+ befindet sich in der 2. Antwort.
Paul Verest
Sie können sogar mit Remote-Dateien mit dem Remote-System-Explorer (RSE)
Christophe Roussy
@ Boris, diese Frage wurde einige Jahre zuvor gestellt. Der andere sollte als Duplikat von diesem markiert werden .
Glenn Slayden

Antworten:

199

Dieses Problem wird in Eclipse 3.7 (Indigo) behoben. Während " Automatisch aktualisieren " die Ressourcen möglicherweise wieder synchronisiert, ist der Aktualisierungs-Hook nur für Windows vorhanden. Unter Linux und Mac OS muss das Dateisystem daher regelmäßig abgefragt werden.

Ab 3.7 gibt es eine neue Einstellung Settings > General > Workspace > Refresh On Access(auch bekannt als Lightweight Refresh). Diese Einstellung bewirkt, dass Eclipse Ressourcen automatisch aktualisiert, wenn festgestellt wird, dass sie nicht synchron sind. Beim Öffnen, Lesen oder Durchsuchen von Dateien wird verhindert, dass nicht synchronisierte Fehler auftreten.

Siehe auch: https://bugs.eclipse.org/303517

James Blackburn
quelle
61
Es verwirrt den Verstand, dass dies eine Option ist . Ich habe meine nicht synchronisierten Dateien nie aktualisiert.
Christoffer Hammarström
18
:( Ich habe lange und hart dagegen gekämpft, es zu einer Option zu machen. Du hast Recht, es ist verrückt.
James Blackburn
6
Und wenn Sie möchten, dass diese Option die Standardeinstellung in Eclipse 3.8 / 4.2 ist, stimmen Sie hier ab: bugs.eclipse.org/340977
James Blackburn
5
Ich benutze allerdings IntelliJ IDEA. Ich muss mich nie um das Speichern von Dateien kümmern, da diese automatisch gespeichert werden. Es funktioniert einfach. Wenn sich eine Datei auf der Festplatte ändert, ändert sich dies in der IDE. Wenn es einen Konflikt gibt, werden Sie gewarnt und können sich unterscheiden und zusammenführen. Im schlimmsten Fall hat es die lokale Geschichte, so dass Sie immer auf ein paar Minuten zurückgreifen können.
Christoffer Hammarström
1
@ ChristofferHammarström: Eclipse hat auch einen lokalen Verlauf: Klicken Sie mit der rechten Maustaste in den Datei-Editor> Vergleichen mit> Lokaler Verlauf.
ccpizza
28

Ich denke, wenn Sie im Projektexplorer auf den Projektknoten klicken und F5 drücken oder mit der rechten Maustaste klicken und Aktualisieren auswählen, werden alle Ressourcen für dieses Projekt aktualisiert. Wenn Sie bei gedrückter STRG-Taste auf mehrere Projekte klicken, sollten Sie in der Lage sein, mehrere Projekte gleichzeitig zu aktualisieren.

Ein einziger Klick auf ein Projekt, STRG + A, um alles auszuwählen, und ein F5 sollten genau das tun, was Sie brauchen - alles aktualisieren.

Ich muss das testen, wenn ich die Chance dazu bekomme, aber ich glaube, so habe ich ähnliche Probleme in der Vergangenheit überwunden.


Mir ist aufgefallen, dass diese Antwort routinemäßig abgelehnt wird. Ich möchte darauf hinweisen, dass sich die Frage auf eine bestimmte Version von Eclipse bezieht: 3.4.2. Bis zur Version 3.7 Indigo of Eclipse gab es keine automatische Methode, um nicht synchronisierte Ressourcen zu aktualisieren , wie in James Blackburns Antwort erwähnt . Die in dieser Antwort beschriebene Methode ist die einzige Methode, um dies in Version 3.4.2 (und jeder anderen Version vor 3.7 Indigo) zu erreichen.

Thomas Owens
quelle
13
Beachten Sie, dass das Aktualisieren mehrerer ausgewählter Projekte nicht funktioniert, wenn eines davon geschlossen ist. Sie müssen zuerst die Auswahl geschlossener Projekte aufheben. Wenn in der Paket-Explorer- oder Navigator-Ansicht keine Projekte ausgewählt sind und F5 gedrückt wird, werden alle geöffneten Projekte aktualisiert (Strg-Klick zum Abwählen, Klicken auf leeren Bereich funktioniert nicht).
Tom Clift
71
Keine Beleidigung für irgendjemanden, aber warum ist die akzeptierte Antwort auf eine Frage, wie Eclipse dazu gebracht werden kann, etwas automatisch zu tun, eine Beschreibung, wie man es manuell macht?
Srekel
9
@Srekel Zum Zeitpunkt der Veröffentlichung war dies die einzige Methode, um das zu tun, was @DNS tun möchte. Basierend auf der neueren Antwort von @James Blackburn gab es ein Problem, das tatsächlich gemeldet und behoben wurde, lange nachdem diese Frage ursprünglich veröffentlicht wurde. Bei neueren Versionen von Eclipse ist diese Antwort nicht korrekt. In der Frage wird jedoch speziell Eclipse 3.4.2 zitiert - dies ist die Methode zur Lösung des in der Frage dargestellten Problems.
Thomas Owens
20

In der Eclipse-IDE treten häufig Probleme mit der Nicht-Synchronisierung auf. Daher müssen Sie diese Option aktivieren. Fenster -> Einstellungen -> Arbeitsbereich -> Aktualisieren mit nativen Hooks oder Abfragen.

DON
quelle
5
Ich glaube, dies ist derzeit die richtige Antwort, zumindest seit Eclipse Mars.
Henno Vermeulen
1
Dieses Kontrollkästchen funktioniert bei Eclipse 4.5 unter Ubuntu 14.04 nicht. Nach einer externen Änderung der Datei wird Eclipse diese erst sehen, wenn ich diese Datei in Eclipse öffne oder die Aktualisierung vornehme. Der Browser sieht also keine Aktualisierung der .cssDatei, wenn ich diese Datei beispielsweise über einen externen Editor aktualisiere, während ich die Server-App über Eclipse ausführe. Um dies zu beheben, habe ich dieses Plugin verwendet, mit dem das Kontrollkästchen tatsächlich funktioniert. Siehe diese Antwort .
Ruslan Stelmachenko
Dies ist eine funktionierende Option für die VersionNeon.3 Release (4.6.3)
Kimchi Man
In Neon.3 auf dem Mac befindet sich die Option unter Einstellungen> Allgemein> Arbeitsbereich> Mit nativen Hooks oder Abfragen aktualisieren.
Jmelvin
5

Es gibt eine globale Aktualisierung - haben Sie nichts (oder alles) im Paket-Explorer ausgewählt und drücken Sie F5 (oder klicken Sie mit der rechten Maustaste auf den leeren Bereich und wählen Sie Aktualisieren). Dies kann natürlich ziemlich lange dauern, wenn Sie große Projekte haben.

Michael Borgwardt
quelle
Es ist nicht automatisch, aber sehr effektiv (+1).
geliebt.von.Jesus
5

Eclipse Helios verfügt über eine integrierte Aktualisierungsfunktion unter Einstellungen> Allgemein> Arbeitsbereich. Es befindet sich an derselben Stelle, an der Sie automatische Builds deaktivieren. Wählen Sie Automatisch aktualisieren. Ein Plugin mit der gleichen Funktionalität ist das Filesync Plugin von Andrei Loskutov. Die Adresse der Update-Site lautet: http://andrei.gmxhome.de/eclipse/ . Wählen Sie während der Installation Eclipse 3.5-3.7-Plugins> FileSync.

user466206
quelle
4

Angesichts der Tatsache, dass Java 7 eine API für Dateisystem-Hooks hat, würde man denken, dass die Aktualisierung in Eclipse besser gehandhabt werden könnte.

Bearbeiten: Tatsächlich gibt es ein Plugin, das diesen Mechanismus verwendet: https://github.com/psxpaul/EclipseJava7Refresher

bronsted
quelle
Danke für das Plugin. Ohne sie sieht meine Eclipse unter Ubuntu die externen Änderungen der Dateien nicht, selbst wenn "Fenster-> Einstellungen-> Allgemein-> Arbeitsbereich-> Aktualisieren mit nativen Hooks oder Abfragen" aktiviert ist.
Ruslan Stelmachenko
3

Vielleicht sollten Sie eine Feature-Anfrage auf der Eclipse-Site hinzufügen:

https://bugs.eclipse.org/bugs/

Ich denke, es wäre eine großartige Idee, eine Präferenz für das automatische Aktualisieren veralteter Ressourcen hinzuzufügen.


quelle
3

Eine globale Aktualisierung fehlt in Eclipse wirklich. Das obige Verfahren zum Auswählen aller Projekte und anschließenden Ausführen der Aktualisierung (z. B. F5) funktioniert nicht, wenn Sie Projekte in Ihrer Auswahl geschlossen haben. Das heißt, wenn Sie die Hälfte Ihrer vielen Projekte wie ich geschlossen haben, klicken Sie bei gedrückter Strg-Taste durch Ihre Dutzende von Projekten. Das ist ziemlich schmerzhaft. Ich wünschte, Eclipse würde geschlossene Projekte einfach ignorieren.

Karol
quelle
3

Die globale Aktualisierung ist in Eclipse ohne Plugins und ohne Auswahl jedes Projekts in Ihrem Arbeitsbereich vorhanden.

Grundsätzlich müssen Sie alles in Ihrem Projektexplorer abwählen und F5 drücken. Klicken Sie dazu bei gedrückter Strg-Taste auf die ausgewählte Ressource im Projektexplorer und drücken Sie F5.

Gediminas Aleknavičius
quelle
2

Ja, Refresh on Access ist längst überfällig. Diese Antworten auf diese und ähnliche Anfragen deuten normalerweise darauf hin, dass die globale automatische Aktualisierung aktiviert werden kann, was bei großen Remote-Projekten einige Zeit in Anspruch nehmen kann. In der Tat gibt es diejenigen, die sagen würden, dass Refresh on Access das ursprüngliche (<3.x) Standardverhalten gewesen sein sollte ...

MikeW
quelle
2

Ich habe es geschafft, dieses Problem zu lösen, indem ich eine neue "externe Tool" -Laufkonfiguration erstellt habe, die eine leere Batchdatei ausführt. In der Ausführungskonfiguration kann der Arbeitsbereich nach Abschluss aktualisiert werden. Dann habe ich mit Practically Macro ein Makro erstellt, das 1) die letzte externe Tool-Run-Konfiguration ausführt (den Arbeitsbereich aktualisiert) und 2) die letzte Debug-Run-Konfiguration ausführt (meine App ausführt). Wenn Sie "Konsole zuweisen" deaktivieren, wird der vollständige Eintrag für das externe Tool nicht im Debug-Fenster angezeigt.

NateS
quelle
1

Auch wenn die von anderen Personen vorgeschlagenen Lösungen tatsächlich korrekt sind, haben Sie ein " Alle aktualisieren " -Plugin für Eclipse. Fügen Sie einfach die Update-Seite zu Ihrer Eclipse-Liste der Update-Sites hinzu, um sie in Ihrer IDE zu installieren.

Romain Linsolas
quelle
2
Ich bekomme eine 404, wenn ich auf diese Links klicke. Lebt das Projekt noch?
Eran Harel
1
In der Tat scheint dieses Projekt tot zu sein :(
Romain Linsolas
1

Zum Starten gibt es eine Option zum automatischen Aktualisieren von Dateien in

Window -> Preferences -> General -> Startup and Shutdown -> Refresh workspace on startup

Klicken Sie darauf, um einen "Neuanfang" in Eclipse zu starten. :) :)

Version: Eclipse 4.12

geliebt von Jesus
quelle