Eclipse può aggiornare automaticamente le risorse?


161

Eclipse (3.4.2 con PyDev) si occupa delle risorse non sincronizzate (file che sono stati modificati al di fuori dell'IDE) in modo diverso dagli altri IDE che ho usato, dove solo le risorse con editor aperti sono considerate non sincronizzate . In Eclipse, qualsiasi risorsa può andare fuori sincrono.

Ciò significa che quando eseguo una ricerca dopo che un file è cambiato al di fuori di Eclipse, ricevo una finestra di dialogo di errore che mi informa che i file non sono sincronizzati, anche se non hanno editor aperti. Per quanto ne so, non esiste un comando di aggiornamento globale, quindi sono costretto a leggere i nomi dei progetti (ho diversi progetti) nella finestra di dialogo dell'errore e fare clic con il tasto destro del mouse su + per ciascuno di essi.

Ho verificato l' Refresh Automaticallyimpostazione Settings > General > Workspace, ma questo non ha alcun effetto. Esiste un modo per fare in modo che Eclipse carichi sempre risorse non attive dal disco?


La risposta aggiornata per Eclipse 3.7+ è nella seconda risposta.
Paul Verest,

Puoi persino sincronizzarti con file remoti utilizzando Remote System Explorer (RSE)
Christophe Roussy,


@Boris, questa domanda è stata posta diversi anni prima. L' altro dovrebbe essere contrassegnato come duplicato di questo .
Glenn Slayden,

Risposte:


199

Questo problema verrà risolto in Eclipse 3.7 (Indigo). Mentre " Aggiorna automaticamente " alla fine ripristina la sincronizzazione delle risorse, l'hook di aggiornamento esiste solo per Windows, quindi su Linux e Mac OS deve eseguire periodicamente il polling del filesystem.

Dalla 3.7 c'è una nuova preferenza Settings > General > Workspace > Refresh On Access(aka Lightweight Refresh). Questa preferenza fa sì che Eclipse aggiorni automaticamente le risorse quando scopre che sono "fuori sincrono". Durante l'apertura, la lettura o la ricerca di file, impedirà il verificarsi di errori non sincronizzati.

Vedi anche: https://bugs.eclipse.org/303517


61
Sorprende che questa sia un'opzione . Non ho mai aggiornato i miei file non sincronizzati.
Christoffer Hammarström,

18
:( Ho combattuto a lungo e duramente per renderlo un'opzione. Hai ragione, è pazzesco.
James Blackburn,

6
E se vuoi che questa opzione sia quella predefinita in Eclipse 3.8 / 4.2, vota qui: bugs.eclipse.org/340977
James Blackburn,

5
Uso IntelliJ IDEA però. Non devo mai preoccuparmi di salvare i file, perché vengono salvati automaticamente. Funziona e basta. Se un file cambia su disco, cambia nell'IDE. Quando c'è un conflitto ti avverte e ti consente di diffondere e fondere. Se il peggio peggiora, ha la storia locale, quindi puoi sempre tornare a pochi minuti fa.
Christoffer Hammarström,

1
@ ChristofferHammarström: Eclipse ha anche una cronologia locale: fai clic con il pulsante destro del mouse nell'editor di file> Confronta con> Cronologia locale.
ccpizza,

28

Penso che se si fa clic sul nodo del progetto in Esplora progetti e si preme F5 o si fa clic con il tasto destro e si seleziona Aggiorna, tutte le risorse per quel progetto verranno aggiornate. Inoltre, se fai CTRL + fai clic su più progetti, dovresti essere in grado di aggiornare più progetti contemporaneamente.

Un singolo clic su un progetto, un CTRL + A per selezionare tutto e un F5 dovrebbe fare esattamente ciò di cui hai bisogno: aggiornare tutto.

Dovrò provarlo quando ne avrò la possibilità, ma credo che sia così che ho superato problemi simili in passato.


Ho notato che questa risposta viene regolarmente votata. Vorrei sottolineare che la domanda si riferisce a una versione specifica di Eclipse: 3.4.2. In realtà non esisteva un metodo automatico per aggiornare le risorse non sincronizzate fino alla versione 3.7 di Indigo di Eclipse , come menzionato nella risposta di James Blackburn . Il metodo descritto in questa risposta è l'unico metodo per raggiungere questo obiettivo nella versione 3.4.2 (e qualsiasi altra versione precedente a 3.7 Indigo).


13
Tieni presente che l'aggiornamento di più progetti selezionati non funzionerà se qualcuno di essi è chiuso: devi prima deselezionare i progetti chiusi. In alternativa, quando nessun progetto è selezionato nelle viste Esplora pacchetti o Navigatore, premendo F5 si aggiornano tutti i progetti aperti (fare clic tenendo premuto il tasto Ctrl per deselezionare, facendo clic su uno spazio vuoto non funziona).
Tom Clift,

71
Senza offesa per nessuno, ma perché la risposta accettata a una domanda su come convincere Eclipse a fare qualcosa automaticamente è una descrizione di come farlo manualmente?
Srekel,

9
@Srekel Perché al momento della pubblicazione, questo era l'unico metodo per fare ciò che @DNS vuole fare. Sulla base della risposta più recente di @James Blackburn, si è verificato un problema che è stato effettivamente segnalato e corretto ben dopo che questa domanda è stata originariamente pubblicata. Con le versioni più recenti di Eclipse, questa risposta non è corretta. Tuttavia, la domanda cita specificamente Eclipse 3.4.2: questo è il metodo per risolvere il problema presentato nella domanda.
Thomas Owens,

21

Il problema di fuori sincronizzazione è comune nell'IDE di Eclipse, quindi è necessario selezionare questa finestra di Windows -> preferenza -> Area di lavoro -> Aggiorna utilizzando hook o polling nativi.


6
Credo che questa sia attualmente la risposta corretta, almeno da Eclipse Mars.
Henno Vermeulen,

1
Questa casella di controllo non funziona per me su Eclipse 4.5 su Ubuntu 14.04. Dopo la modifica esterna del file, Eclipse non lo vede finché non apro questo file in Eclipse o non eseguo l'aggiornamento. Quindi il browser non vede l'aggiornamento del .cssfile, ad esempio se aggiorno questo file dall'editor esterno mentre eseguo l'app server da eclipse. Per risolvere questo problema ho usato questo plugin che fa funzionare la casella. Vedere questa risposta .
Ruslan Stelmachenko,

Questa è un'opzione funzionante per la versioneNeon.3 Release (4.6.3)
Kimchi Man,

In Neon.3 su Mac, l'opzione è in Preferenze> Generale> Area di lavoro> Aggiorna utilizzando hook o polling nativi.
jmelvin,

5

C'è un aggiornamento globale: non hai selezionato nulla (o tutto) in Esplora pacchetti e premi F5 (o fai clic con il pulsante destro del mouse su uno spazio vuoto e seleziona Aggiorna). Naturalmente, questo potrebbe richiedere piuttosto tempo se si hanno progetti di grandi dimensioni.


Non è automatico, ma molto efficace (+1).
loved.by.Jesus

5

Eclipse Helios possiede una funzione di aggiornamento integrata in Preferenze> Generale> Area di lavoro. È nello stesso punto in cui disabiliti le build automatiche. Seleziona aggiorna automaticamente. Un plugin con la stessa funzionalità è il plugin Filesync di Andrei Loskutov. L'indirizzo del sito di aggiornamento è: http://andrei.gmxhome.de/eclipse/ . Durante l'installazione, selezionare i plugin Eclipse 3.5-3.7> FileSync.


4

Dato che Java 7 ha un'API per gli hook del filesystem, si potrebbe pensare che l'aggiornamento possa essere gestito meglio in Eclipse.

Modifica: attualmente esiste un plugin che utilizza questo meccanismo: https://github.com/psxpaul/EclipseJava7Refresher


Grazie per il plugin. Senza di essa il mio Eclipse su Ubuntu non vede le modifiche esterne dei file anche quando è abilitato "Finestra-> Preferenze-> Generale-> Area di lavoro-> Aggiorna usando hook o polling nativi".
Ruslan Stelmachenko,

3

Forse dovresti aggiungere una richiesta di funzionalità sul sito eclipse:

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

Penso che sarebbe un'ottima idea aggiungere una preferenza per l'aggiornamento automatico di risorse obsolete.


3

Un aggiornamento globale manca davvero in Eclipse. La procedura sopra descritta con la selezione di tutti i progetti e quindi l'esecuzione dell'aggiornamento (ad es. F5) non funziona se i progetti chiusi sono stati inclusi nella selezione. Ciò significa che se 1/2 dei tuoi numerosi progetti è chiuso come me, ti ritroverai manualmente facendo clic tenendo premuto il tasto Ctrl su decine di progetti. Questo è abbastanza doloroso. Vorrei che Eclipse ignorasse semplicemente i progetti chiusi.


3

L'aggiornamento globale esiste in realtà in Eclipse senza plug-in e senza selezionare tutti i progetti nell'area di lavoro.

Fondamentalmente è necessario deselezionare tutto nel project explorer e premere F5. Per fare ciò Ctrl + fai clic sulla risorsa selezionata in Esplora progetti e premi F5.


2

Sì, l'aggiornamento all'accesso è atteso da tempo ... quelle risposte a questo e simili richieste suggerivano di solito di consentire l'aggiornamento automatico globale, che potrebbe richiedere un'età per grandi progetti remoti. In effetti ci sono quelli che direbbero che Refresh on Access avrebbe dovuto essere il comportamento predefinito originale (<3.x) ...


2

Sono riuscito a risolvere questo problema creando un nuovo "strumento esterno" che esegue la configurazione che esegue un file batch vuoto. Nella configurazione di esecuzione, è possibile farlo aggiornare l'area di lavoro al termine. Quindi ho creato una macro usando Praticamente Macro che 1) esegue l'ultima configurazione di esecuzione dello strumento esterno (aggiornando l'area di lavoro), quindi 2) esegue l'ultima configurazione di esecuzione del debug (eseguendo la mia app). Se si deseleziona "Allocate console", la voce di strumento esterno completata non verrà visualizzata nella finestra di debug.


1

Anche se le soluzioni proposte da altri perso sono effettivamente corrette, hai un plug-in " Aggiorna tutto " per Eclipse. Aggiungi semplicemente la pagina di aggiornamento all'elenco Eclipse dei siti di aggiornamento per installarla nel tuo IDE.


2
Ottengo un 404 quando faccio clic su questi collegamenti. Il progetto è ancora vivo?
Eran Harel,

1
In effetti, questo progetto sembra essere morto :(
Romain Linsolas,

1

Per l' avvio esiste un'opzione per aggiornare automaticamente i file

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

Fare clic per avere un "nuovo" inizio in eclissi. :)

Versione: Eclipse 4.12

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.