O Eclipse pode atualizar recursos automaticamente?

161

O Eclipse (3.4.2 com PyDev) lida com recursos fora de sincronia (arquivos que foram editados fora do IDE) de maneira diferente de outros IDEs que usei, onde apenas os recursos com editores abertos são considerados fora de sincronia . No Eclipse, qualquer recurso pode ficar fora de sincronia.

Isso significa que, quando executo uma pesquisa após a alteração de qualquer arquivo fora do Eclipse, recebo uma caixa de diálogo de erro informando que os arquivos estão fora de sincronia, mesmo que não tenham editores abertos. Até onde eu sei, não há comando de atualização global; portanto, sou forçado a ler os nomes dos projetos (tenho vários projetos) na caixa de diálogo de erro e clique com o botão direito do mouse em + atualização para cada um deles.

Eu verifiquei a Refresh Automaticallyconfiguração Settings > General > Workspace, mas isso não tem efeito. Existe alguma maneira de fazer o Eclipse sempre carregar apenas recursos não ativos do disco?

DNS
fonte
A resposta atualizada para o Eclipse 3.7+ está na 2ª resposta.
Paul Verest
Você pode até sincronizar com arquivos remotos usando o Remote System Explorer (RSE)
Christophe Roussy
@ Boris, essa pergunta foi feita vários anos antes. O outro deve ser marcado como uma duplicata deste .
Glenn Slayden

Respostas:

199

Este problema será corrigido no Eclipse 3.7 (Indigo). Enquanto " Atualizar automaticamente " acaba trazendo os recursos de volta à sincronização, o gancho de atualização existe apenas para Windows, portanto, no Linux e Mac OS, ele precisa pesquisar o sistema de arquivos periodicamente.

A partir da versão 3.7, há uma nova preferência Settings > General > Workspace > Refresh On Access(também conhecida como Atualização leve). Essa preferência faz com que o Eclipse atualize automaticamente os recursos quando descobrir que eles estão "fora de sincronia". Ao abrir, ler ou pesquisar arquivos, evita a ocorrência de erros fora de sincronia.

Veja também: https://bugs.eclipse.org/303517

James Blackburn
fonte
61
Confunde a mente de que esta é uma opção . Nunca atualizei meus arquivos fora de sincronia.
Christoffer Hammarström
18
. :( I lutou longa e duramente contra tornando-se uma opção que você está certo, é uma loucura.
James Blackburn
6
E se você quiser esta opção para ser o padrão no Eclipse 3.8 / 4.2 vote aqui: bugs.eclipse.org/340977
James Blackburn
5
Eu uso o IntelliJ IDEA embora. Nunca preciso me preocupar em salvar arquivos, porque eles são salvos automaticamente. Isso simplesmente funciona. Se um arquivo for alterado no disco, ele será alterado no IDE. Quando há um conflito, ele avisa e permite que você diferencie e se junte. Se o pior acontecer, ele tem o Histórico local, para que você possa sempre reverter alguns minutos atrás.
Christoffer Hammarström
1
@ ChristofferHammarström: O Eclipse também possui um histórico local: Clique com o botão direito do mouse no editor de arquivos> Comparar com> Histórico Local.
Ccpizza
28

Acho que se você clicar no nó do projeto no Project Explorer e pressionar F5 ou clicar com o botão direito do mouse e selecionar Atualizar, todos os recursos desse projeto serão atualizados. Além disso, se você pressionar CTRL + em vários projetos, poderá atualizar vários projetos ao mesmo tempo.

Um único clique em um projeto, um CTRL + A para selecionar tudo e um F5 deve fazer exatamente o que você precisa - atualize tudo.

Vou ter que testar isso quando tiver a chance, mas acredito que foi assim que superei problemas semelhantes no passado.


Percebi que essa resposta é rotineiramente recusada. Gostaria de salientar que a pergunta se refere a uma versão específica do Eclipse: 3.4.2. Na verdade, não havia método automático para atualizar recursos fora de sincronização até a versão 3.7 Indigo do Eclipse , conforme mencionado na resposta de James Blackburn . O método descrito nesta resposta é o único método para conseguir isso na versão 3.4.2 (e em qualquer outra versão anterior ao 3.7 Indigo).

Thomas Owens
fonte
13
Observe que a atualização de vários projetos selecionados não funcionará se algum deles estiver fechado - é necessário desmarcar os projetos fechados primeiro. Como alternativa, quando nenhum projeto é selecionado nas visualizações Package Explorer ou Navigator, pressionar F5 atualiza todos os projetos abertos (clique com a tecla Ctrl pressionada para desmarcar, clicar no espaço vazio não funciona).
Tom Clift
71
Não ofende ninguém, mas por que a resposta aceita a uma pergunta sobre como fazer o Eclipse fazer algo automaticamente é uma descrição de como fazê-lo manualmente?
Srekel
9
@Srekel Porque, no momento da publicação, este era o único método para fazer o que o @DNS quer fazer. Com base na resposta mais recente de @James Blackburn, houve um problema que foi realmente relatado e corrigido bem depois que essa pergunta foi originalmente publicada. Nas versões mais recentes do Eclipse, esta resposta não está correta. No entanto, a pergunta cita especificamente o Eclipse 3.4.2 - este é o método de resolver o problema apresentado na pergunta.
Thomas Owens
21

O problema de falta de sincronização é comum no IDE do eclipse, portanto, você deve verificar esta opção janelas -> preferência -> Área de trabalho -> atualizar usando ganchos nativos ou sondagem.

DON
fonte
6
Acredito que esta seja atualmente a resposta correta, pelo menos desde Eclipse Mars.
Henno Vermeulen
1
Esta caixa de seleção não funciona para mim no Eclipse 4.5 no Ubuntu 14.04. Após a alteração externa do arquivo, o Eclipse não o vê até eu abrir esse arquivo no Eclipse ou fazer a atualização. Portanto, o navegador não vê a atualização do .cssarquivo, por exemplo, se eu atualizar esse arquivo do editor externo enquanto estiver executando o aplicativo de servidor do eclipse. Para corrigir isso, usei este plugin, que faz com que a caixa de seleção realmente funcione. Veja esta resposta .
Ruslan Stelmachenko
Esta é a opção de trabalho para a versão Neon.3 Release (4.6.3)
Kimchi Man
No Neon.3 no Mac, a opção está em Preferências> Geral> Área de trabalho> Atualizar usando ganchos ou pesquisas nativas.
jmelvin
5

Há uma atualização global - não tenha nada (ou tudo) selecionado no explorador de pacotes e pressione F5 (ou clique com o botão direito do mouse no espaço vazio e selecione Atualizar). Obviamente, isso pode demorar um pouco se você tiver grandes projetos.

Michael Borgwardt
fonte
Não é automático, mas muito eficaz (+1).
loved.by.Jesus
5

O Eclipse Helios possui um recurso de atualização integrado em Preferências> Geral> Área de Trabalho. É no mesmo local em que você desativa as compilações automáticas. Selecione atualizar automaticamente. Um plug-in com a mesma funcionalidade é o Plug-in Filesync de Andrei Loskutov. O endereço do site de atualização é: http://andrei.gmxhome.de/eclipse/ . Durante a instalação, selecione Plug-ins do Eclipse 3.5-3.7> FileSync.

user466206
fonte
4

Como o Java 7 possui uma API para ganchos do sistema de arquivos, alguém poderia pensar que a atualização poderia ser melhor gerenciada no Eclipse.

Edit: Na verdade, existe um plugin que usa esse mecanismo: https://github.com/psxpaul/EclipseJava7Refresher

bronsted
fonte
Obrigado pelo plugin. Sem ele, meu Eclipse no Ubuntu não vê as alterações externas dos arquivos, mesmo quando a opção "Janela-> Preferências-> Geral-> Área de trabalho-> Atualizar usando ganchos nativos ou pesquisa" está ativada.
Ruslan Stelmachenko
3

Talvez você deva adicionar uma solicitação de recurso no site eclipse:

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

Eu acho que seria uma ótima idéia adicionar uma preferência pela atualização automática de recursos desatualizados.


fonte
3

Uma atualização global está realmente ausente no Eclipse. O procedimento acima, com seleção de todos os projetos e execução da atualização (por exemplo, F5), não funcionará se você tiver fechado os projetos incluídos na sua seleção. Isso significa que, se você tiver 1/2 dos seus muitos projetos fechados como eu, você se encontrará clicando Ctrl manualmente em dezenas de projetos. Isso é bastante doloroso. Eu gostaria que o Eclipse simplesmente ignorasse os projetos fechados.

Karol
fonte
3

A atualização global realmente existe no Eclipse simples, sem plugins e sem selecionar todos os projetos em sua área de trabalho.

Basicamente, você precisa desmarcar tudo no seu explorador de projetos e pressionar F5. Para fazer isso, pressione Ctrl + clique no recurso selecionado no explorador de projetos e pressione F5.

Gediminas Aleknavičius
fonte
2

Sim, a atualização no acesso está atrasada há muito tempo ... essas respostas a essa pergunta e a perguntas semelhantes geralmente sugerem a atualização automática global, o que pode levar um tempo para grandes projetos remotos. De fato, há quem diga que a atualização no acesso deveria ter sido o comportamento padrão original (<3.x) ...

MikeW
fonte
2

Eu consegui resolver isso criando uma nova "ferramenta externa", execute config que executa um arquivo em branco em branco. Na configuração de execução, você pode atualizar a área de trabalho quando concluir. Em seguida, criei uma macro usando Praticamente macro que 1) executa a última configuração de execução da ferramenta externa (atualizando o espaço de trabalho) e, em seguida, 2) executa a última configuração de execução de depuração (executando meu aplicativo). Se você desmarcar a opção "Alocar console", a entrada de ferramenta externa concluída não será exibida na janela de depuração.

NateS
fonte
1

Mesmo que as soluções propostas por outras pessoas estejam realmente corretas, você tem um plug-in " Atualizar tudo " para Eclipse. Basta adicionar a página Atualização à sua lista de sites de atualização do Eclipse para instalá-la no seu IDE.

Romain Linsolas
fonte
2
Recebo um 404 quando clico nesses links. O projeto ainda está vivo?
Erã Harel
1
Na verdade, este projecto parece ser :( mortos
Romain Linsolas
1

Para Iniciar, há uma opção para atualizar automaticamente os arquivos no

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

Clique nele para ter um novo começo no eclipse. :)

Versão: Eclipse 4.12

Jesus amado
fonte