Eclipse peut-il actualiser automatiquement les ressources?

161

Eclipse (3.4.2 avec PyDev) traite les ressources non synchronisées (fichiers qui ont été modifiés en dehors de l'EDI) différemment des autres IDE que j'ai utilisés, où seules les ressources avec des éditeurs ouverts sont considérées comme non synchronisées . Dans Eclipse, toute ressource peut se désynchroniser.

Cela signifie que lorsque j'effectue une recherche après qu'un fichier a changé en dehors d'Eclipse, j'obtiens une boîte de dialogue d'erreur m'indiquant que les fichiers ne sont pas synchronisés, même s'ils n'ont pas d'éditeur ouvert. Pour autant que je sache, il n'y a pas de commande d'actualisation globale, je suis donc obligé de lire les noms des projets (j'ai plusieurs projets) dans la boîte de dialogue d'erreur, et de faire un clic droit + actualiser pour chacun d'eux.

J'ai vérifié le Refresh Automaticallyréglage Settings > General > Workspace, mais cela n'a aucun effet. Existe-t-il un moyen pour qu'Eclipse ne charge que les ressources non actives à partir du disque?

DNS
la source
La réponse à jour pour Eclipse 3.7+ est dans la 2ème réponse.
Paul Verest
Vous pouvez même synchroniser avec des fichiers distants en utilisant l'explorateur de système distant (RSE)
Christophe Roussy
@Boris, cette question a été posée plusieurs années plus tôt. L' autre doit être marqué comme un double de celui- ci.
Glenn Slayden

Réponses:

199

Ce problème sera résolu dans Eclipse 3.7 (Indigo). Alors que " Refresh Automatically " ramène finalement les ressources en synchronisation, le hook d'actualisation n'existe que pour Windows, donc sous Linux et Mac OS, il doit régulièrement interroger le système de fichiers.

À partir de 3.7, il y a une nouvelle préférence Settings > General > Workspace > Refresh On Access(alias Lightweight Refresh). Cette préférence oblige Eclipse à actualiser automatiquement les ressources lorsqu'il découvre qu'elles sont «désynchronisées». Lors de l'ouverture, de la lecture ou de la recherche de fichiers, cela empêchera les erreurs de désynchronisation.

Voir aussi: https://bugs.eclipse.org/303517

James Blackburn
la source
61
Il est stupéfiant que ce soit une option . Je n'ai jamais actualisé mes fichiers désynchronisés.
Christoffer Hammarström
18
:( Je me suis battu longtemps et durement pour en faire une option. Vous avez raison, c'est fou.
James Blackburn
6
Et si vous voulez que cette option soit la valeur par défaut dans Eclipse 3.8 / 4.2, votez ici: bugs.eclipse.org/340977
James Blackburn
5
J'utilise cependant IntelliJ IDEA. Je n'ai jamais à me soucier de l'enregistrement des fichiers, car ils sont enregistrés automatiquement. Cela fonctionne juste. Si un fichier change sur le disque, il change dans l'EDI. Quand il y a un conflit, il vous avertit et vous permet de comparer et de fusionner. Si le pire arrive au pire, il a une histoire locale, vous pouvez donc toujours revenir à il y a quelques minutes.
Christoffer Hammarström
1
@ ChristofferHammarström: Eclipse a également une histoire locale: cliquez avec le bouton droit de la souris dans l'éditeur de fichiers> Comparer avec> Histoire locale.
ccpizza
28

Je pense que si vous cliquez sur le nœud du projet dans l'explorateur de projet et appuyez sur F5 ou cliquez avec le bouton droit de la souris et sélectionnez Actualiser, toutes les ressources de ce projet seront actualisées. De plus, si vous CTRL + cliquez sur plusieurs projets, vous devriez pouvoir actualiser plusieurs projets en même temps.

Un simple clic sur un projet, un CTRL + A pour tout sélectionner et un F5 devrait faire exactement ce dont vous avez besoin: tout rafraîchir.

Je devrai tester cela quand j'en aurai l'occasion, mais je pense que c'est ainsi que j'ai surmonté des problèmes similaires dans le passé.


J'ai remarqué que cette réponse est régulièrement mise aux voix. Je tiens à souligner que la question fait référence à une version spécifique d'Eclipse: 3.4.2. Il n'y avait en fait aucune méthode automatique pour actualiser les ressources désynchronisées jusqu'à la version 3.7 Indigo d'Eclipse , comme mentionné dans la réponse de James Blackburn . La méthode décrite dans cette réponse est la seule méthode pour y parvenir dans la version 3.4.2 (et toute autre version antérieure à 3.7 Indigo).

Thomas Owens
la source
13
Notez que l'actualisation de plusieurs projets sélectionnés ne fonctionnera pas si l'un d'entre eux est fermé - vous devez d'abord désélectionner les projets fermés. Sinon, quand aucun projets sont sélectionnés dans les vues Package Explorer ou Navigator appuyant sur F5 pour actualiser tous les projets ouverts (ctrl-clic pour annuler la sélection, en cliquant sur l' espace vide ne fonctionne pas).
Tom Clift
71
Aucune offense pour personne, mais pourquoi la réponse acceptée à une question sur la façon d'amener Eclipse à faire quelque chose automatiquement est-elle une description de la façon de le faire manuellement?
Srekel
9
@Srekel Parce qu'au moment de la publication, c'était la seule méthode pour faire ce que @DNS veut faire. Sur la base de la réponse plus récente de @James Blackburn, un problème a été signalé et corrigé bien après la publication de cette question. Avec les versions plus récentes d'Eclipse, cette réponse n'est pas correcte. Cependant, la question cite spécifiquement Eclipse 3.4.2 - c'est la méthode de résolution du problème présenté dans la question.
Thomas Owens
21

Le problème de désynchronisation est courant dans l'IDE Eclipse, vous devez donc cocher cette option windows -> préférence -> Workspace -> actualiser à l'aide de hooks natifs ou d'interrogation.

DON
la source
6
Je pense que c'est actuellement la bonne réponse, du moins depuis Eclipse Mars.
Henno Vermeulen
1
Cette case à cocher ne fonctionne pas pour moi sur Eclipse 4.5 sur Ubuntu 14.04. Après un changement externe de fichier, Eclipse ne le voit pas tant que je n'ai pas ouvert ce fichier dans Eclipse ou effectué l'actualisation. Ainsi, le navigateur ne voit pas la mise à jour du .cssfichier, par exemple si je mets à jour ce fichier à partir d'un éditeur externe tout en exécutant l'application serveur depuis eclipse. Pour résoudre ce problème, j'ai utilisé ce plugin qui fait fonctionner la case à cocher. Voyez cette réponse .
Ruslan Stelmachenko
Ceci est une option de travail pour la version Neon.3 Release (4.6.3)
Kimchi Man
Dans Neon.3 sur Mac, l'option est dans Préférences> Général> Espace de travail> Actualiser à l'aide de hooks natifs ou d'interrogation.
jmelvin
5

Il y a une actualisation globale - n'avez rien (ou tout) sélectionné dans l'explorateur de packages et appuyez sur F5 (ou cliquez avec le bouton droit sur un espace vide et sélectionnez Actualiser). Bien sûr, cela peut prendre assez longtemps si vous avez de grands projets.

Michael Borgwardt
la source
Ce n'est pas automatique, mais très efficace (+1).
aimé.par.Jesus
5

Eclipse Helios possède une fonction d'actualisation intégrée dans Préférences> Général> Espace de travail. C'est au même endroit que vous désactivez les builds automatiques. Sélectionnez actualiser automatiquement. Un plugin avec la même fonctionnalité est le plugin Filesync d'Andrei Loskutov. L'adresse du site de mise à jour est: http://andrei.gmxhome.de/eclipse/ . Lors de l'installation, sélectionnez Plugins Eclipse 3.5-3.7> FileSync.

user466206
la source
4

Étant donné que Java 7 a une API pour les hooks de système de fichiers, on pourrait penser que l'actualisation pourrait être mieux gérée dans Eclipse.

Edit: En fait, il existe un plugin qui utilise ce mécanisme: https://github.com/psxpaul/EclipseJava7Refresher

bronsté
la source
Merci pour le plugin. Sans cela, mon Eclipse sur Ubuntu ne voit pas les modifications externes des fichiers même lorsque "Fenêtre-> Préférences-> Général-> Espace de travail-> Actualiser à l'aide de hooks natifs ou d'interrogation" est activé.
Ruslan Stelmachenko
3

Vous devriez peut-être ajouter une demande de fonctionnalité sur le site eclipse:

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

Je pense que ce serait une excellente idée d'ajouter une préférence pour l'actualisation automatique des ressources obsolètes.


la source
3

Une actualisation globale fait vraiment défaut dans Eclipse. La procédure ci-dessus avec la sélection de tous les projets puis l'exécution de l'actualisation (par exemple F5) ne fonctionne pas si vous avez des projets fermés inclus dans votre sélection. Cela signifie que si vous avez la moitié de vos nombreux projets fermés comme moi, vous vous retrouvez à cliquer manuellement sur vos dizaines de projets en maintenant la touche Ctrl enfoncée. C'est assez douloureux. Je souhaite qu'Eclipse ignore simplement les projets fermés.

Karol
la source
3

L'actualisation globale existe en fait dans Eclipse ordinaire sans aucun plug-in et sans sélectionner chaque projet dans votre espace de travail.

En gros, vous devez tout désélectionner dans votre explorateur de projet et appuyer sur F5. Pour ce faire, Ctrl + cliquez sur la ressource sélectionnée dans l'explorateur de projet et appuyez sur F5.

Gediminas Aleknavičius
la source
2

Oui, l'actualisation à l'accès est attendue depuis longtemps ... ces réponses à cette question et à des demandes similaires suggéraient généralement d'activer l'actualisation automatique globale, ce qui pourrait prendre un âge pour les grands projets distants. En fait, il y a ceux qui diraient que Refresh on Access aurait dû être le comportement par défaut d'origine (<3.x) ...

MikeW
la source
2

J'ai réussi à résoudre ce problème en créant une nouvelle configuration d'exécution "outil externe" qui exécute un fichier batch vide. Dans la configuration d'exécution, vous pouvez lui demander d'actualiser l'espace de travail une fois terminé. Ensuite, j'ai créé une macro en utilisant Pratiquement Macro qui 1) exécute la dernière configuration d'exécution de l'outil externe (rafraîchissant l'espace de travail), puis 2) exécute la dernière configuration d'exécution de débogage (exécutant mon application). Si vous décochez "Allocate console", alors l'entrée d'outil externe complétée n'apparaîtra pas dans la fenêtre de débogage.

NateS
la source
1

Même si les solutions proposées par d'autres perso sont effectivement correctes, vous disposez d'un plugin " Refresh All " pour Eclipse. Ajoutez simplement la page de mise à jour à votre liste de sites de mise à jour Eclipse pour l'installer dans votre IDE.

Romain Linsolas
la source
2
J'obtiens un 404 lorsque je clique sur ces liens. Le projet est-il toujours en vie?
Eran Harel
1
En effet, ce projet semble mort :(
Romain Linsolas
1

Pour le démarrage, il existe une option pour actualiser automatiquement les fichiers dans

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

Cliquez dessus pour avoir un «nouveau» départ dans l'éclipse. :)

Version: Eclipse 4.12

aimé.par.Jésus
la source