Ответ 1
Попробуйте удалить проект из Eclipse (не удаляйте содержимое проекта на диске), а затем перезагрузите его.
Если я переделаю рефакторинг на что-то, он попытается сделать это на мгновение, а затем просто вернется обратно к тому, что было названо ранее. Не отображается никаких ошибок или каких-либо признаков того, что что-то не так.
...
Просто затмение затмения, и теперь это еще хуже. Прежде чем, по крайней мере, выбор refactor- > rename будет "вставлять" имя и притворяться, что позволяет вам делать рефакторинг. Теперь, после перезагрузки, выбор refactor- > rename ничего не делает.
Извините, если это задано в неправильной области или подсайте StackExchange, но не знает, где еще спросить. Я много раз искал Google, пытаясь найти ответ на эту проблему, и ничего не получилось.
Win7 64 бит
Eclipse Indigo build 20110615-0604
Попробуйте удалить проект из Eclipse (не удаляйте содержимое проекта на диске), а затем перезагрузите его.
У меня была эта проблема с Eclipse Helios. Я заглянул в каталог.метадат рабочей области и открыл файл .log. У него была довольно длинная цепочка ссылок, относящихся к ошибке, но соответствующие ее части:
java.lang.NoClassDefFoundError: org/eclipse/jdt/core/IMethod
и
java.lang.reflect.InvocationTargetException при org.eclipse.jface.operation.ModalContext.run(ModalContext.java:421) в org.eclipse.jface.window.ApplicationWindow $1.run(ApplicationWindow.java:759) в org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) в org.eclipse.jface.window.ApplicationWindow.run(ApplicationWindow.java:756) в org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2606) в org.eclipse.jdt.internal.ui.refactoring.RefactoringExecutionHelper.perform(RefactoringExecutionHelper.java:191) в org.eclipse.jdt.internal.ui.refactoring.RefactoringExecutionHelper.perform(RefactoringExecutionHelper.java:151) в org.eclipse.jdt.ui.refactoring.RenameSupport.perform(RenameSupport.java:197) в org.eclipse.jdt.internal.ui.refactoring.reorg.RenameLinkedMode.doRename(RenameLinkedMode.java:361) в org.eclipse.jdt.internal.ui.refactoring.reorg.RenameLinkedMode $EditorSynchronizer.left(RenameLinkedMode.java:119) в org.eclipse.jface.text.link.LinkedModeModel.exit(LinkedModeModel.java:341) в org.eclipse.jface.text.link.LinkedModeUI $4.run(LinkedModeUI.java:1194) на org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) в org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) в org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4041) на org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3660)
Я пошел в Справка > Установить новое программное обеспечение > Что уже установлено, а затем выбрали все, что связано с org.eclipse.swt и нажмите Удалить. После перезапуска Eclipse проблема исчезла, и я снова смог повторно переименовать/переименовать.
Рефактор не будет работать, если в вашем проекте есть ошибки.
Исправить ошибки или просто прокомментировать обнаруженный раздел как ошибку, чтобы запустить рефактор.
Это сработало для меня.
Я хотел бы добавить некоторую информацию к другим ответам здесь.
Архенотский ответ указывает, что вы можете получить дополнительную информацию от запуска предварительного просмотра в операции переименования. Мне потребовалось некоторое время, чтобы выяснить, как добраться до предварительного просмотра: введите второе имя переименования, чтобы получить диалог. Иногда Preview не выдавал информацию об ошибке (и также не было быстрого переименования без ppoup), но нажатие кнопки "ОК" в диалоговом окне показало больше.
MutantXenu нашел информацию в журналах, перейдя в файлы в рабочей области, но вы также можете добраться до них в Eclipse, перейдя в окно журнала ошибок (из Cmd -3)
Когда у меня возникла эта проблема, журнал ошибок указал мне на это неудавшееся утверждение: "Поиск объявления метода не нашел оригинальный элемент", что привело к некоторым неурегулированным ошибкам. (Я запускаю Kepler, но проблема, по-видимому, трудно реплицировать, и я не вижу доказательств, которые она разрешила. См. здесь и здесь.)
Вы можете увидеть, испытываете ли вы эту конкретную ошибку, выбирая метод и используя Cmd-G (или Ctrl-G: Search > Declarations > Workspace). Eclipse не может найти метод, который вы пытаетесь переименовать, и поиск выглядит пустым.
В моем случае предполагается, что ошибка может иметь отношение к методам с одинаковым именем в разных классах. Когда проблема возникает с одним методом, это не влияет на большинство других.
Обновить, Project- > Clean и перезапустить Eclipse не помогли мне. Ответ Кевина работал на меня: "Попробуйте удалить проект из Eclipse (не удаляйте содержимое проекта на диске), а затем перезагрузите его".
Хотя переименование методов непосредственно в редакторе не работает в очень редких случаях, а затем IDE восстанавливает имя метода orignal после нажатия клавиши возврата - вид "агностического режима":-), когда я делаю то же самое через Refactoring → Изменить подпись Methode, в правом верхнем углу меняю имя метода, затем получаю полностью подробное сообщение об ошибке: "При выполнении рефакторинга возникло непредвиденное исключение... Причина: анонимный № 1 в.... в lambda # 1... в... Working Copy... не существует."
Это указывает на то, что методы переименования запускают этот сбой, , когда метод, который нужно переименовать, используется в контексте лямбда-или анонимного класса.
Чтобы проверить, прокомментировать происхождение в лямбде или анонимном классе, рефакторинг/переименование может работать так, как ожидалось, как это было в моем случае.
Я видел ту же проблему, что и OP, когда я пытался переименовать обе переменные и имена методов. После перезапуска Eclipse функциональность Refactor- > Rename работала правильно.
Если что-то не слишком очевидно делает отказ рефакторинга, вы можете искать проблемы, пытаясь предварительно просмотреть рефакторинг, а не пытаться его выполнить.
Как отметил Дики Мур, вы не можете реорганизовать с ошибками в своем проекте... Но это не всегда ошибки кода или проблемы с созданием путей, которые маркируют Eclipse. Поэтому иногда это не выглядит так, как будто у вас есть какие-либо ошибки, и он все равно будет терпеть неудачу. "Предварительный просмотр", как упоминалось выше, покажет эти проблемы в диалоговом окне с ошибкой, даже если они никогда не появятся в другом месте.
Оттуда вы можете настроить свой проект на исправление ошибок (общий заключается в том, что рефактор пытается учесть выходную папку, которой он не должен, что можно устранить, исключив папку в настройках Build Path > Source
.) или удалить проблемные плагины.
С 4.4 (Luna) у меня были проблемы с рефакторингом перекрестных проектов после больших рефакторингов - удаление /.metadata/.plugins/org.eclipse.jdt.core папка исправлена, что для меня
С той же проблемой:
Я запускаю это в окнах:
Я "исправил" поведение:
В проекте не было ошибок, ничего не видно в журналах, когда он зависает, а удаление/реимпорт проекта из рабочей области тоже не работает (и удаляет .classpath.project и .settings перед повторным импортом).