Невозможно переименовать рефакторинг в затмение - программирование
Подтвердить что ты не робот

Невозможно переименовать рефакторинг в затмение

Если я переделаю рефакторинг на что-то, он попытается сделать это на мгновение, а затем просто вернется обратно к тому, что было названо ранее. Не отображается никаких ошибок или каких-либо признаков того, что что-то не так.

...

Просто затмение затмения, и теперь это еще хуже. Прежде чем, по крайней мере, выбор refactor- > rename будет "вставлять" имя и притворяться, что позволяет вам делать рефакторинг. Теперь, после перезагрузки, выбор refactor- > rename ничего не делает.

Извините, если это задано в неправильной области или подсайте StackExchange, но не знает, где еще спросить. Я много раз искал Google, пытаясь найти ответ на эту проблему, и ничего не получилось.

Win7 64 бит
Eclipse Indigo build 20110615-0604

4b9b3361

Ответ 1

Попробуйте удалить проект из Eclipse (не удаляйте содержимое проекта на диске), а затем перезагрузите его.

Ответ 2

У меня была эта проблема с 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 проблема исчезла, и я снова смог повторно переименовать/переименовать.

Ответ 3

Рефактор не будет работать, если в вашем проекте есть ошибки.

Исправить ошибки или просто прокомментировать обнаруженный раздел как ошибку, чтобы запустить рефактор.

Это сработало для меня.

Ответ 4

Я хотел бы добавить некоторую информацию к другим ответам здесь.

Архенотский ответ указывает, что вы можете получить дополнительную информацию от запуска предварительного просмотра в операции переименования. Мне потребовалось некоторое время, чтобы выяснить, как добраться до предварительного просмотра: введите второе имя переименования, чтобы получить диалог. Иногда Preview не выдавал информацию об ошибке (и также не было быстрого переименования без ppoup), но нажатие кнопки "ОК" в диалоговом окне показало больше.

MutantXenu нашел информацию в журналах, перейдя в файлы в рабочей области, но вы также можете добраться до них в Eclipse, перейдя в окно журнала ошибок (из Cmd -3)

Когда у меня возникла эта проблема, журнал ошибок указал мне на это неудавшееся утверждение: "Поиск объявления метода не нашел оригинальный элемент", что привело к некоторым неурегулированным ошибкам. (Я запускаю Kepler, но проблема, по-видимому, трудно реплицировать, и я не вижу доказательств, которые она разрешила. См. здесь и здесь.)

Вы можете увидеть, испытываете ли вы эту конкретную ошибку, выбирая метод и используя Cmd-G (или Ctrl-G: Search > Declarations > Workspace). Eclipse не может найти метод, который вы пытаетесь переименовать, и поиск выглядит пустым.

В моем случае предполагается, что ошибка может иметь отношение к методам с одинаковым именем в разных классах. Когда проблема возникает с одним методом, это не влияет на большинство других.

Обновить, Project- > Clean и перезапустить Eclipse не помогли мне. Ответ Кевина работал на меня: "Попробуйте удалить проект из Eclipse (не удаляйте содержимое проекта на диске), а затем перезагрузите его".

Ответ 5

Хотя переименование методов непосредственно в редакторе не работает в очень редких случаях, а затем IDE восстанавливает имя метода orignal после нажатия клавиши возврата - вид "агностического режима":-), когда я делаю то же самое через Refactoring → Изменить подпись Methode, в правом верхнем углу меняю имя метода, затем получаю полностью подробное сообщение об ошибке: "При выполнении рефакторинга возникло непредвиденное исключение... Причина: анонимный № 1 в.... в lambda # 1... в... Working Copy... не существует."

Это указывает на то, что методы переименования запускают этот сбой, , когда метод, который нужно переименовать, используется в контексте лямбда-или анонимного класса.

Чтобы проверить, прокомментировать происхождение в лямбде или анонимном классе, рефакторинг/переименование может работать так, как ожидалось, как это было в моем случае.

Ответ 6

Я видел ту же проблему, что и OP, когда я пытался переименовать обе переменные и имена методов. После перезапуска Eclipse функциональность Refactor- > Rename работала правильно.

Ответ 7

Если что-то не слишком очевидно делает отказ рефакторинга, вы можете искать проблемы, пытаясь предварительно просмотреть рефакторинг, а не пытаться его выполнить.

Как отметил Дики Мур, вы не можете реорганизовать с ошибками в своем проекте... Но это не всегда ошибки кода или проблемы с созданием путей, которые маркируют Eclipse. Поэтому иногда это не выглядит так, как будто у вас есть какие-либо ошибки, и он все равно будет терпеть неудачу. "Предварительный просмотр", как упоминалось выше, покажет эти проблемы в диалоговом окне с ошибкой, даже если они никогда не появятся в другом месте.

Оттуда вы можете настроить свой проект на исправление ошибок (общий заключается в том, что рефактор пытается учесть выходную папку, которой он не должен, что можно устранить, исключив папку в настройках Build Path > Source.) или удалить проблемные плагины.

Ответ 8

С 4.4 (Luna) у меня были проблемы с рефакторингом перекрестных проектов после больших рефакторингов - удаление /.metadata/.plugins/org.eclipse.jdt.core папка исправлена, что для меня

Ответ 9

С той же проблемой:

  • щелкните левой кнопкой мыши по имени свойства в классе java
  • щелкните правой кнопкой мыши
  • рефакторинг
  • переименуйте
  • выполните переименование
  • нажмите enter
  • зеленый график выполнения отображается в нижнем колонтитуле, но не заканчивается
  • для восстановления я должен убить eclipse (вы можете попробовать выйти, но он будет зависать при сохранении состояния рабочей среды)

Я запускаю это в окнах:

  • Версия: Kepler Service Release 2
  • Код сборки: 20140224-0627

Я "исправил" поведение:

  • внесение небольшого изменения в файл
  • сохранение файла
  • повторил рефактор, и он работал нормально (хотя есть неудобная задержка, ожидающая завершения работы рефактора около пяти секунд).

В проекте не было ошибок, ничего не видно в журналах, когда он зависает, а удаление/реимпорт проекта из рабочей области тоже не работает (и удаляет .classpath.project и .settings перед повторным импортом).