2012-07-08 19 views
16

Se faccio un refactor rinominare su qualcosa, prova a farlo per un momento, ma poi ritorna semplicemente a ciò che è stato chiamato prima. Nessun errore o nessuna indicazione che qualcosa sia sbagliato viene mostrato.non può refactoring rinominare in eclissi

...

eclissi appena riavviato e ora è anche peggio. Prima, almeno la selezione di refactoring-> rinomina "impacchetta" il nome e fa finta di farti fare un refactoring. Ora, dopo il riavvio, la selezione di refactor-> rinomina non fa nulla.

Siamo spiacenti se questo viene chiesto nell'area sbagliata o sotto-sito di StackExchange, ma non sapevo dove altro da chiedere. Ho cercato su Google molte volte cercando di trovare una risposta a questo problema e nulla è venuto fuori.

Win7 64 bit
Eclipse Indigo costruire 20110615-0604

+1

Qual sei? Cosa stai rinominando e a cosa? Devi solo fornire maggiori informazioni se ti aspetti effettivamente qualche aiuto ... – arcy

+1

Verifica anche se il progetto ha qualche errore di compilazione. A volte con errori di compilazione non ti consente di refactoring. – vikas

+1

Questo è successo a me quando si tenta di rinominare su un metodo Javascript. JSDT è installato. Rimuovere e aggiungere il progetto non ha aiutato. – Nilzor

risposta

3

tentare di eliminare il progetto da Eclipse (non cancellare i contenuti del progetto su disco) e ricaricarlo.

0

Stavo vedendo lo stesso identico problema dell'OP quando stavo cercando di rinominare entrambe le variabili e i nomi dei metodi. Dopo aver riavviato Eclipse, la funzionalità Refactor-> Rename ha funzionato correttamente.

1

Ho avuto questo problema con Eclipse Helios. Ho cercato nella directory .metadata dell'area di lavoro e ho aperto il file .log. Aveva una bella lunga catena di riferimenti relativi all'errore, ma le parti pertinenti di che erano:

java.lang.NoClassDefFoundError: org/eclipse/jdt/core/IMethod

e

java.lang.reflect.InvocationTargetException at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:421) at org.eclipse.jface.window.ApplicationWindow$1.run(ApplicationWindow.java:759) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.jface.window.ApplicationWindow.run(ApplicationWindow.java:756) at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2606) at org.eclipse.jdt.internal.ui.refactoring.RefactoringExecutionHelper.perform(RefactoringExecutionHelper.java:191) at org.eclipse.jdt.internal.ui.refactoring.RefactoringExecutionHelper.perform(RefactoringExecutionHelper.java:151) at org.eclipse.jdt.ui.refactoring.RenameSupport.perform(RenameSupport.java:197) at org.eclipse.jdt.internal.ui.refactoring.reorg.RenameLinkedMode.doRename(RenameLinkedMode.java:361) at org.eclipse.jdt.internal.ui.refactoring.reorg.RenameLinkedMode$EditorSynchronizer.left(RenameLinkedMode.java:119) at org.eclipse.jface.text.link.LinkedModeModel.exit(LinkedModeModel.java:341) at org.eclipse.jface.text.link.LinkedModeUI$4.run(LinkedModeUI.java:1194) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4041) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3660)

sono andato a Aiuto>Install New Software>Cosa è già installato, quindi selezionato tutto relativo a org.eclipse.swt e fatto clic su Disinstallare. Dopo aver riavviato Eclipse, il problema è andato via e sono stato in grado di refactoring/rinominare normalmente di nuovo.

+0

Stesso discorso con Keplero – leonbloy

1

Il refactoring non funzionerà se ci sono errori nel progetto.

Correggere gli errori o semplicemente commentare la sezione rilevata come errore per eseguire il refactoring.

Questo ha funzionato per me.

0

Se qualcosa di non troppo evidente fa fallire un refactatore, è possibile cercare i problemi tentando di visualizzare l'anteprima del refattore piuttosto che tentare di eseguirlo.

Come menzionato da Dicky Moore, non è possibile eseguire il refactoring con errori nel progetto ... Ma questi non sono sempre errori di codice o problemi di percorso di build che Eclipse segna. Quindi a volte non sembra che tu abbia degli errori e continuerà a fallire. "Anteprima", come menzionato sopra mostrerà questi problemi in una finestra di errore, anche se non si presentano mai altrove.

Da lì, è possibile configurare il progetto per correggere gli errori (Un comune è che il refactor tenta di tenere conto di una cartella di output che non dovrebbe, che può essere risolta escludendo la cartella nelle impostazioni Build Path > Source.) o disinstallare i plugin problematici.

0

Con 4.4 (Luna), ho avuto problemi di refactoring cross-project dopo grandi refactoring - cancellata la cartella /.metadata/.plugins/org.eclipse.jdt.core risolta che per me

1

Ho voluto aggiungere alcune informazioni ad alcuni altre risposte qui.

Archenoth's answer indica che è possibile ottenere ulteriori informazioni dall'esecuzione di Anteprima sull'operazione di ridenominazione. Mi ci è voluto un po 'per capire come arrivare all'anteprima: digita il tasto di rinomina una seconda volta per ottenere la finestra di dialogo. A volte l'anteprima non forniva le informazioni sull'errore (e nemmeno la rapida rinomina senza il ppoup), ma facendo clic su OK nella finestra di dialogo si diceva di più.

MutantXenu trovato informazioni nei registri andando in file nell'area di lavoro, ma si può anche arrivare a questi all'interno di Eclipse andando alla visualizzazione registro errori (da Cmd-3)

Quando ho avuto questo problema, il log degli errori mi ha indirizzato a questa asserzione fallita: "Cerca la dichiarazione del metodo non ha trovato l'elemento originale" che ha portato ad alcuni bug non risolti. (Sto correndo Keplero, ma il problema è apparentemente difficile da replicare e non vedo prove è risolto. Vedere here e here.)

Si può vedere se si verifica questo specifico bug selezionando il metodo e usando Cmd-G (o Ctrl-G: Cerca> Dichiarazioni> Area di lavoro). Eclipse non è in grado di trovare il metodo che stai cercando di rinominare e la ricerca risulta vuota.

Il mio caso suggerisce che è possibile che l'errore abbia a che fare con metodi con nomi identici in classi diverse. Quando il problema si verifica con un metodo, non interessa la maggior parte degli altri.

Aggiorna, Progetto-> Pulisci, e il riavvio di Eclipse non è stato utile per me. Kevin's answer ha funzionato per me: "Prova a eliminare il progetto da Eclipse (non eliminare i contenuti del progetto su disco) e quindi ricaricarlo."

1

Mentre i metodi di ridenominazione direttamente nell'editor non funzionano in casi molto rari e quindi l'IDE ripristina il nome del metodo originale dopo aver premuto il tasto Invio - tipo di "modalità agnostica" :-), quando faccio lo stesso tramite Refactoring - >Change Methode Signature, nell'angolo in alto a destra cambio il nome del metodo, quindi ricevo un messaggio di errore completamente dettagliato: "Si è verificata un'eccezione imprevista durante l'esecuzione del refactoring ... Motivo: anonimo # 1 in .... in lambda # 1 ... in ... Copia di lavoro ... non esiste. "

Indica che i metodi di ridenominazione attivano questo errore, quando il metodo da ridenominare viene utilizzato nel contesto di una classe lambda o anonima.

Per controllare, commentare l'occorrenza nella classe lambda o anonima, il refactoring/ridenominazione potrebbe quindi funzionare come previsto nel mio caso.

0

Ha avuto lo stesso problema:

  • sinistra cliccare sul nome della proprietà nella classe java
  • tasto destro del mouse
  • refactoring
  • rinominare
  • fare la ridenominazione
  • premere invio
  • verde la barra di avanzamento viene visualizzata nel menu dei piè di pagina, ma non termina mai
  • di recuperare devo uccidere Eclipse (si può provare a chiudere ma si bloccherà durante il salvataggio dello stato banco di lavoro)

Io corro questo su Windows:

  • Versione: Kepler Service Release 2
  • Corporatura ID: 20140224-0627

I 'fixed' il comportamento da:

  • facendo una piccola modifica al file
  • il salvataggio del file
  • ritentata il refactoring e ha funzionato bene (anche se c'è un ritardo scomoda attesa per il refactoring per completare circa cinque secondi)

Ci non c'erano errori nel progetto, nulla di ovvio nei registri quando si blocca e l'eliminazione/reimportazione del progetto dallo spazio di lavoro non ha funzionato neanche (e cancellando .classpath .project e .settings prima di reimportare).

0

provare il seguente (solo lavorato per me):

  1. eliminare il progetto
  2. Creare un nuovo progetto Java con lo stesso nome