2012-07-08 75 views
16

如果我做的東西重構重新命名,它會嘗試做了一會兒,但隨後只是恢復它的權利回到它以前的名字命名。顯示沒有錯誤或任何錯誤的跡象。不能重命名重構在Eclipse

...

剛剛重新啓動了eclipse,現在情況更糟。之前,至少選擇重構 - >重命名將「框」名稱並假裝它讓你做重構。現在,重啓後,選擇重構 - >重命名什麼也不做。

很抱歉,如果這是問錯了區域或StackExchange的子網站,但不知道還有什麼地方可以問。我已經多次搜索,試圖找到這個問題的答案,並沒有出現。

的Win7 64位
Eclipse的靛藍建立20110615-0604

+1

什麼看法,你在一個新的Java項目?你在重命名什麼?如果你真的希望得到一些幫助,你只需要提供更多信息...... – arcy 2012-07-08 00:53:27

+1

同時驗證項目是否有編譯錯誤。有時編譯錯誤,它不會讓你重構的東西。 – vikas 2012-07-08 12:20:05

+1

嘗試在Javascript方法上重命名時發生在我身上。 JSDT已安裝。刪除和添加項目並沒有幫助。 – Nilzor 2013-12-12 21:09:36

回答

3

嘗試刪除Eclipse中的項目(在磁盤上不刪除項目的內容),然後重新裝入。

0

當我試圖重命名變量和方法名稱時,我看到與OP完全相同的問題。重新啓動Eclipse後,重構 - >重命名功能正常工作。

1

我在Eclipse Helios中遇到了這個問題。我查看了工作區的.metadata目錄並打開了.log文件。它有一個相當長的與錯誤引用的鏈條,但該相關部分是:

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

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)

我去幫助>安裝新軟件>什麼已經安裝,然後選擇一切與org.eclipse.swt有關,並點擊卸載。重新啓動Eclipse後,問題消失了,我可以重新正常重新命名。

+0

與開普勒一樣 – leonbloy 2013-09-23 20:09:24

1

如果項目中有任何錯誤,重構將不起作用。

修正錯誤,或者只是註釋掉以運行重構被檢測爲錯誤的部分。

這爲我工作。

0

如果不太明顯會導致重構失敗,您可以通過嘗試預覽重構而不是嘗試執行重構來查找問題。

正如Dicky Moore所提到的,您不能在項目中重構錯誤......但這些並不總是代碼錯誤或Eclipse標記的構建路徑問題。所以有時它不會出現,就好像你有任何錯誤,它仍然會失敗。如上所述,「預覽」將在錯誤對話框中顯示這些問題,即使它們從未在別處顯示。

從那裏,你可以配置你的項目,以修復錯誤(常見的一個是,重構試圖解釋的輸出文件夾,它不應該,這可以通過在Build Path > Source設置排除的文件夾固定。 )或卸載有問題的插件。

0

隨着4。4(LUNA),我有大後重構跨項目的重構問題 - 固定刪除/.metadata/.plugins/org.eclipse.jdt.core 文件夾,對我

1

我想補充一些資料給一些其他答案在這裏。

Archenoth's answer指出您可以從重命名操作中運行預覽獲得更多信息。我花了一段時間才弄清楚如何進行預覽:再次鍵入重命名按鍵以獲取對話框。有時候Preview並沒有給出錯誤信息(並且沒有ppoup的情況下也沒有進行快速重命名),但是在對話框中單擊OK確實說了更多。

MutantXenu發現信息在日誌中通過進入文件工作區,但你也可以通過將錯誤日誌查看到這些在Eclipse(來自加利福尼亞 - 3)

當我有這個問題,錯誤日誌指出我這個失敗的斷言:「搜索方法聲明沒有找到原始元素」,導致一些未解決的錯誤。 (我正在運行開普勒,但問題顯然很難複製,並且我沒有看到它已解決的證據。請參閱herehere。)

您可以通過選擇方法來查看是否遇到此特定錯誤並使用Cmd-G(或Ctrl-G:搜索>聲明>工作區)。 Eclipse無法找到您要重命名的方法,並且搜索結果爲空。

我的情況表明,有可能錯誤可能與不同類中的同名命名方法有關。當一種方法出現問題時,它不會影響大多數其他方法。

刷新,項目 - >清理,並重新啓動Eclipse對我沒有幫助。 Kevin's answer爲我工作:「嘗試從Eclipse中刪除項目(不要刪除磁盤上的項目內容),然後重新加載它。」

1

儘管直接在編輯器中重命名方法在極少數情況下不起作用,然後在按下return鍵之後IDE恢復了orignal方法名稱 - 類型爲「agnostic mode」:-),當我通過Refactoring執行同樣的操作時 - >更改Methode簽名,在右上角我更改方法名稱,然後我收到一個完全詳細的錯誤消息:「意外的異常發生在執行重構...原因:匿名#1 in .... in lambda#1 ... in ...工作副本...不存在。「

這表示重命名方法觸發此失敗,當在lambda或匿名類的上下文中使用要重命名的方法時。

要檢查,註釋lambda或匿名類中的出現,重構/重命名可以像預期的那樣工作,就像它在我的情況一樣。

0

曾有同一個問題:

  • 在屬性名左鍵點擊在Java類
  • 右擊
  • 重構
  • 重命名
  • 做重命名
  • 按回車
  • 綠色進度條出現在頁腳菜單上,但從未結束
  • 追我不得不殺了日食(你可以嘗試退出,但節省工作臺狀態時,它會掛起)

我在Windows上運行此:

  • 版本:開普勒服務版本2
  • 版本ID:20140224-0627

我 '固定' 的行爲:

  • 作出小改動,文件
  • 保存文件
  • 重試重構,它能正常工作(雖然有不舒服的延遲等待重構完成大約5秒)

有在項目中沒有錯誤,當它掛起並從工作區刪除/重新導入項目時,日誌中沒有任何明顯的變化(並且在重新導入之前刪除.classpath .project和.settings)。

0

試試下面的(只是爲我工作):

  1. 刪除項目
  2. 創建具有相同名稱