Czy Eclipse może automatycznie odświeżyć zasoby?

161

Eclipse (3.4.2 z PyDev) radzi sobie z niezsynchronizowanymi zasobami (plikami, które były edytowane poza IDE) inaczej niż inne IDE, z których korzystałem, gdzie tylko zasoby z otwartymi edytorami są uznawane za niezsynchronizowane . W Eclipse każdy zasób może stracić synchronizację.

Oznacza to, że kiedy szukam po zmianie dowolnego pliku poza Eclipse, pojawia się okno dialogowe błędu z informacją, że pliki nie są zsynchronizowane, nawet jeśli nie mają otwartych edytorów. O ile wiem, nie ma polecenia globalnego odświeżania, więc jestem zmuszony przeczytać nazwy projektów (mam kilka projektów) w oknie dialogowym błędu i wykonać prawym przyciskiem myszy + odświeżenie dla każdego z nich.

Sprawdziłem Refresh Automaticallyustawienie Settings > General > Workspace, ale nie ma to żadnego efektu. Czy istnieje sposób, aby Eclipse zawsze ładował nieaktywne zasoby z dysku?

DNS
źródło
Aktualna odpowiedź dla Eclipse 3.7+ to druga odpowiedź.
Paul Verest
Możesz nawet synchronizować ze zdalnymi plikami za pomocą zdalnego eksploratora systemu (RSE)
Christophe Roussy,
@Boris, to pytanie zostało zadane kilka lat wcześniej. Inny powinien być oznaczony jako duplikat tego jednego.
Glenn Slayden

Odpowiedzi:

199

Ten problem zostanie rozwiązany w Eclipse 3.7 (Indigo). Chociaż „ Odśwież automatycznie ” ostatecznie przywraca synchronizację zasobów, hak odświeżania istnieje tylko w systemie Windows, więc w systemie Linux i Mac OS musi okresowo sondować system plików.

Od 3.7 dostępna jest nowa preferencja Settings > General > Workspace > Refresh On Access(inaczej Lightweight Refresh). Ta preferencja powoduje, że Eclipse automatycznie odświeża zasoby, gdy wykryje, że nie są zsynchronizowane. Podczas otwierania, czytania lub wyszukiwania plików zapobiega występowaniu błędów braku synchronizacji.

Zobacz też: https://bugs.eclipse.org/303517

James Blackburn
źródło
61
Zdumiewa umysł, że jest to opcja . Nigdy nie odświeżyłem niezsynchronizowanych plików.
Christoffer Hammarström,
18
:( Długo i ciężko walczyłem przeciwko temu, by to opcja. Masz rację, to szalone.
James Blackburn,
6
A jeśli chcesz, aby ta opcja była domyślna w Eclipse 3.8 / 4.2, głosuj tutaj: bugs.eclipse.org/340977
James Blackburn
5
Jednak używam IntelliJ IDEA. Nigdy nie muszę się martwić o zapisywanie plików, ponieważ są one zapisywane automatycznie. Po prostu działa. Jeśli plik zmienia się na dysku, zmienia się w IDE. Gdy pojawia się konflikt, ostrzega Cię i pozwala na porównywanie i scalanie. W najgorszym przypadku ma Historię lokalną, więc zawsze możesz wrócić do sprzed kilku minut.
Christoffer Hammarström
1
@ ChristofferHammarström: Eclipse ma również historię lokalną: kliknij prawym przyciskiem myszy w edytorze plików> Porównaj z> Historia lokalna.
ccpizza
28

Myślę, że jeśli klikniesz węzeł projektu w Eksploratorze projektów i naciśniesz F5 lub klikniesz prawym przyciskiem myszy i wybierzesz Odśwież, wszystkie zasoby dla tego projektu zostaną odświeżone. Ponadto, jeśli naciśniesz CTRL i klikniesz wiele projektów, powinieneś być w stanie odświeżyć wiele projektów w tym samym czasie.

Jedno kliknięcie projektu, CTRL + A, aby zaznaczyć wszystko, a F5 powinien zrobić dokładnie to, czego potrzebujesz - odświeżyć wszystko.

Będę musiał to przetestować, kiedy nadarzy się okazja, ale uważam, że w przeszłości w ten sposób pokonywałem podobne problemy.


Zauważyłem, że ta odpowiedź rutynowo jest głosowana w dół. Chciałbym zaznaczyć, że pytanie dotyczy konkretnej wersji Eclipse: 3.4.2. W rzeczywistości nie było automatycznej metody odświeżania niezsynchronizowanych zasobów aż do wersji 3.7 Indigo of Eclipse , jak wspomniano w odpowiedzi Jamesa Blackburna . Metoda opisana w tej odpowiedzi jest jedyną metodą pozwalającą to osiągnąć w wersji 3.4.2 (i każdej innej wersji przed 3.7 Indigo).

Thomas Owens
źródło
13
Pamiętaj, że odświeżenie wielu wybranych projektów nie zadziała, jeśli którykolwiek z nich jest zamknięty - musisz najpierw odznaczyć zamknięte projekty. Alternatywnie, gdy żaden projekt nie jest wybrany w widoku Eksploratora pakietów lub Nawigatora, naciśnięcie klawisza F5 odświeży wszystkie otwarte projekty (kliknięcie z wciśniętym klawiszem Ctrl, aby odznaczyć, kliknięcie pustego miejsca nie działa).
Tom Clift,
71
Nikogo nie obrażam, ale dlaczego zaakceptowana odpowiedź na pytanie, jak zmusić Eclipse do zrobienia czegoś automatycznie, zawiera opis tego, jak zrobić to ręcznie?
Srekel
9
@Srekel Ponieważ w momencie wysyłania był to jedyny sposób na zrobienie tego, co chce zrobić @DNS. Opierając się na nowszej odpowiedzi @Jamesa Blackburna, pojawił się problem, który został zgłoszony i poprawiony długo po opublikowaniu tego pytania. W nowszych wersjach Eclipse ta odpowiedź jest nieprawidłowa. Jednak pytanie konkretnie cytuje Eclipse 3.4.2 - jest to metoda rozwiązania problemu przedstawionego w pytaniu.
Thomas Owens
21

Problem braku synchronizacji jest powszechny w eclipse IDE, więc musisz zaznaczyć tę opcję windows -> preferencje -> Obszar roboczy -> odśwież używając natywnych hooków lub odpytywania.

DON
źródło
6
Uważam, że jest to obecnie poprawna odpowiedź, przynajmniej od czasu Eclipse Mars.
Henno Vermeulen
1
To pole wyboru nie działa dla mnie w Eclipse 4.5 na Ubuntu 14.04. Po zewnętrznej zmianie pliku Eclipse nie widzi go, dopóki nie otworzę tego pliku w Eclipse lub nie dokonam odświeżenia. Więc przeglądarka nie widzi aktualizacji .csspliku, na przykład jeśli zaktualizuję ten plik z zewnętrznego edytora podczas uruchamiania aplikacji serwera z eclipse. Aby to naprawić, użyłem tej wtyczki, która sprawia, że ​​pole wyboru faktycznie działa. Zobacz tę odpowiedź .
Ruslan Stelmachenko
Ta opcja działa dla wersjiNeon.3 Release (4.6.3)
Kimchi Man
W Neon.3 na Macu dostępna jest opcja Preferencje> Ogólne> Przestrzeń robocza> Odśwież, używając natywnych zaczepów lub odpytywania.
jmelvin
5

Istnieje globalne odświeżenie - nie zaznaczaj niczego (lub wszystkiego) w eksploratorze pakietów i naciśnij klawisz F5 (lub kliknij prawym przyciskiem myszy puste miejsce i wybierz opcję Odśwież). Oczywiście może to zająć dużo czasu, jeśli masz duże projekty.

Michael Borgwardt
źródło
Nie jest to automatyczne, ale bardzo skuteczne (+1).
kochany.by.Jezus
5

Eclipse Helios posiada wbudowaną funkcję odświeżania w Preferencje> Ogólne> Przestrzeń robocza. Znajduje się w tym samym miejscu, w którym wyłączasz automatyczne kompilacje. Wybierz opcję odświeżania automatycznie. Wtyczką o tej samej funkcjonalności jest wtyczka Filesync Andrieja Loskutova. Adres witryny aktualizacji to: http://andrei.gmxhome.de/eclipse/ . Podczas instalacji wybierz wtyczki Eclipse 3.5-3.7> FileSync.

user466206
źródło
4

Biorąc pod uwagę, że Java 7 ma interfejs API dla zaczepów systemu plików, można by pomyśleć, że odświeżanie mogłoby być lepiej obsługiwane w Eclipse.

Edycja: Właściwie istnieje wtyczka, która wykorzystuje ten mechanizm: https://github.com/psxpaul/EclipseJava7Refresher

bronsted
źródło
Dzięki za wtyczkę. Bez tego moje Eclipse na Ubuntu nie widzi zewnętrznych zmian plików, nawet jeśli "Okno-> Preferencje-> Ogólne-> Przestrzeń robocza-> Odśwież używając natywnych podpięć lub odpytywania" jest włączone.
Ruslan Stelmachenko
3

Być może powinieneś dodać prośbę o funkcję na stronie eclipse:

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

Myślę, że dobrym pomysłem byłoby dodanie preferencji automatycznego odświeżania nieaktualnych zasobów.


źródło
3

W Eclipse naprawdę brakuje globalnego odświeżania. Powyższa procedura z wyborem wszystkich projektów, a następnie uruchomieniem odświeżania (np. F5) nie działa, jeśli masz zamknięte projekty uwzględnione w wyborze. Oznacza to, że jeśli połowa z wielu Twoich projektów jest zamknięta, tak jak ja, możesz ręcznie przeglądać dziesiątki projektów z naciśniętym klawiszem Ctrl. To jest dość bolesne. Chciałbym, żeby Eclipse po prostu ignorował zamknięte projekty.

Karol
źródło
3

Globalne odświeżanie faktycznie istnieje w zwykłym Eclipse bez żadnych wtyczek i bez wybierania każdego projektu w obszarze roboczym.

Zasadniczo musisz odznaczyć wszystko w eksploratorze projektów i nacisnąć F5. Aby to zrobić, Ctrl + kliknij wybrany zasób w eksploratorze projektów i naciśnij F5.

Gediminas Aleknavičius
źródło
2

Tak, odświeżanie w dostępie jest już dawno spóźnione ... te odpowiedzi na to i podobne pytania zwykle sugerowały włączenie globalnego automatycznego odświeżania, co może zająć wiek w przypadku dużych zdalnych projektów. W rzeczywistości są tacy, którzy powiedzieliby, że Odświeżanie przy dostępie powinno być pierwotnym (<3.x) domyślnym zachowaniem ...

MikeW
źródło
2

Udało mi się to rozwiązać, tworząc nową konfigurację uruchamiania „narzędzia zewnętrznego”, która wykonuje pusty plik wsadowy. W konfiguracji uruchamiania można odświeżyć obszar roboczy po zakończeniu. Następnie utworzyłem makro przy użyciu praktycznie makra, które 1) wykonuje ostatnią konfigurację uruchomienia narzędzia zewnętrznego (odświeżanie obszaru roboczego), a następnie 2) wykonuje ostatnią konfigurację uruchomienia debugowania (uruchomienie mojej aplikacji). Jeśli odznaczysz opcję „Przydziel konsolę”, ukończony wpis narzędzia zewnętrznego nie pojawi się w oknie debugowania.

NateS
źródło
1

Nawet jeśli rozwiązania proponowane przez inne osoby są rzeczywiście poprawne, masz wtyczkę „ Odśwież wszystko ” dla Eclipse. Po prostu dodaj stronę aktualizacji do listy witryn aktualizacji w Eclipse, aby zainstalować ją w swoim IDE.

Romain Linsolas
źródło
2
Po kliknięciu tych linków otrzymuję kod 404. Czy projekt wciąż żyje?
Eran Harel
1
Rzeczywiście, ten projekt wydaje się martwy :(
Romain Linsolas,
1

Podczas uruchamiania dostępna jest opcja automatycznego odświeżania plików w formacie

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

Kliknij go, aby mieć „świeży” początek zaćmienia. :)

Wersja: Eclipse 4.12.0

kochany przez Jezusa
źródło