Can't refactor rename in Eclipse
Asked Answered
P

15

31

If I do a refactor rename on something, it tries to do it for a moment but then just reverts it right back to what it was named before. No errors or any indication that something is wrong is shown.


I just restarted Eclipse and now it's even worse. Before, at least selecting Refactor > Rename would "box" the name and pretend it's letting you do a refactor. Now, after restart, selecting Refactor > Rename does nothing.

Win7 64 bit
Eclipse Indigo build 20110615-0604

Persas answered 8/7, 2012 at 0:37 Comment(4)
What view are you in? What are you renaming, and to what? You only have to give more information if you actually expect some help...Nesselrode
Also verify if the project has any compile error. Sometime with compile errors it does not let you refactor things.Ecumenicist
This happened to me when attempting rename on a Javascript method. JSDT is installed. Removing and adding project did not help.Polyhydric
Update: beware that there is a bug triggering this for newer versions of Eclipse up to 2020-09, please update your Eclipse and see this Q/A for details. And don't forget to vote those up. Of course, regardless of the crash, it should not open "Run...".Headstream
L
21

If you use Lombok (1.18.22 in my case) and the error message in Eclipse Error Logs says Unhandled event loop exception, then it might be a Lombok issue - which in the mean time has been resolved. Upgrade Lombok to 1.18.24 or above.

Latrell answered 21/3, 2022 at 14:1 Comment(5)
I had the same problem with later version of Lombok. I updated it to v1.18.24. I suggest this post is revised to update the mentioned version of Lombok.Tertian
@Tertian At the time of posting the answer v1.18.22 was the latest. Only a snapshot build with the bug fix was available. I've edited the answer and specified the update versionLatrell
I also had same probem was with Lombok 1.18.6 & Eclipse 2022-03. Update Lombok to the latest version helps.Howlett
Same thing here, Lombok was 1.18.14 after update to 1.18.24 solved, thanks!Varia
Same error with Lombok 1.18.20. Resolved by updating to 1.18.26.Fourflusher
I
7

Try to delete the project from Eclipse (don't delete project contents on disk) and then reload it.

Ice answered 12/10, 2012 at 22:24 Comment(1)
8 years later, still the same nonsense.Mown
V
6

I wanted to add some information to some other answers here.

Archenoth's answer points out you can get more information from running Preview on the rename operation. It took me a while to figure out how to get to preview: type the rename keystroke a second time to get the dialog. Sometimes Preview didn't give the error information (and neither did the quick rename without the ppoup) but clicking OK in the dialog did say more.

MutantXenu found information in the logs by going into files in the workspace, but you can also get to these within Eclipse by going to the Error Log view (from Cmd-3)

When I had this problem, the error log pointed me to this failed assertion: "Search for method declaration did not find original element" which led to some unresolved bugs. (I'm running Kepler, but the problem is apparently hard to replicate and I don't see evidence it's resolved. See here and here.)

You can see if you're experiencing this specific bug by selecting the method and using Cmd-G (or Ctrl-G: Search > Declarations > Workspace). Eclipse is unable to find the method you're trying to rename and the search comes up empty.

My case suggests it's possible the error might have to do with identically-named methods in different classes. When the problem is occuring with one method, it doesn't affect most others.

Refresh, Project->Clean, and restarting Eclipse were not helpful to me. Kevin's answer worked for me: "Try to delete the project from Eclipse (don't delete project contents on disk) and then reload it."

Vergeboard answered 17/12, 2014 at 17:3 Comment(0)
B
4

While renaming methods directly in the editor does not work in very rare cases and then the IDE restores the orignal method name after pressing return key - kind of "agnostic mode" :-), when I do the same via Refactoring -> Change Methode Signature, in the upper right corner I change the method name, then I receive a fully detailed error message: "An unexpected exception occured while performing the refactoring... Reason: anonymous #1 in .... in lambda #1 ... in ... Working Copy ... does not exist."

This indicates, that renaming methods triggers this failure, when the method to be renamed is used in the context of an lambda or anonymous class.

To check, comment out the occurence in the lambda or anonymous class, the refactoring/renaming could then work as expected as it did in my case.

Backstitch answered 2/3, 2015 at 12:10 Comment(0)
L
2

I've been struggling this issue too. When I looked on Error Log View of Eclipse, I noticed that each time I tried to rename a variable or method, I was getting this kind of exception:

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)

I noticed it all starts from SWT libraries. Tried to update SWT, but for some reasons I wasn't able even to find SWT installed. So I simply installed SWT Tools 3.106.0.v20170503-0851 via Help -> Install new Software, what happily solved the issue.

Lomeli answered 1/4, 2018 at 19:48 Comment(4)
Welcome to StackOverflow! It's not clear to me that your answer matches the question that was asked. If it does, could you please make the connection more explicit? Thank you.Thedathedric
You can get the site-url to use in Help > Install_New_Software from here: eclipse.org/swt/updatesite.php - I used the milestone-update-site: download.eclipse.org/eclipse/updates/milestonesArredondo
@EllenSpertus It does match the question and solved the problem for me. This stack trace comes from the error-log window in eclipse. When using change-signature or the Refactor>Rename,click-Options, it reports the error and tells you to look at the Error-Log (plain rename without a dialog just executes for a bit then reverts my change and reports nothing). This stack trace shows a particular rename-operation exception. You can tell the stack trace matches because it has RefactoringExecutionHelper and RenameLinkedMode.doRename in it.Arredondo
Ok, after this fixed my problem, I renamed a couple more methods and got the same error again. Restarting Eclipse fixed it. Note that I also had to restart Eclipse the first time after installing SWT.Arredondo
A
1

I had this problem with Eclipse Helios. I looked in the .metadata directory of the workspace and opened the .log file. It had a pretty long chain of references relating to the error, but the pertinent parts of that were:

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

and

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)

I went to Help > Install New Software > What is already installed, and then selected everything relating to org.eclipse.swt and clicked on Uninstall. After restarting Eclipse, the problem went away and I was able to refactor / rename normally again.

Amharic answered 1/6, 2013 at 15:45 Comment(1)
Same here with KeplerChintz
N
1

The refactor will not work if there are any errors in your project.

Fix the errors, or just comment out the section being detected as an error in order to run the refactor.

This worked for me.

Non answered 14/10, 2013 at 21:22 Comment(0)
S
1

Try the following (just worked for me):

  1. Delete the project
  2. Create a new java project with the same name
Subserve answered 14/2, 2018 at 15:14 Comment(0)
N
0

I was seeing the exact same issue as the OP when I was trying to rename both variables, and method names. After I restarted Eclipse, the Refactor->Rename functionality worked correctly.

Nari answered 18/2, 2013 at 21:12 Comment(0)
O
0

If something not overly obvious makes a refactor fail, you can look for problems by attempting to preview the refactor rather than trying to execute it.

As Dicky Moore mentioned, you cannot refactor with errors in your project... But these aren't always code errors or build path issues that Eclipse marks. So sometimes it doesn't appear as though you have any errors and it will still fail. "Preview", as mentioned above will show these problems in an error dialog, even if they never show up elsewhere.

From there, you can configure your project to fix the errors (A common one is that the refactor tries to account for an output folder that it shouldn't, which can be fixed by excluding the folder in your Build Path > Source settings.) or uninstall problematic plugins.

Ohaus answered 16/6, 2014 at 18:24 Comment(0)
C
0

With 4.4 (Luna), I had cross-project refactoring problems after large refactorings - deleting the /.metadata/.plugins/org.eclipse.jdt.core folder fixed that for me

Companionate answered 4/10, 2014 at 1:7 Comment(0)
B
0

Had same issue:

  • left click on property name in java class
  • right click
  • refactor
  • rename
  • do the rename
  • press enter
  • green progress bar appears on footer menu but never finishes
  • to recover i have to kill eclipse (you can try exiting but it will hang when saving workbench state)

I'm running this on windows:

  • Version: Kepler Service Release 2
  • Build id: 20140224-0627

I 'fixed' the behaviour by:

  • making a small change to the file
  • saving the file
  • retried the refactor and it worked fine (although there is an uncomfortable delay waiting for the refactor to complete circa five seconds)

There were no errors in the project, nothing obvious in the logs when it hangs and deleting/reimporting the project from the workspace did not work either (and deleting .classpath .project and .settings before re-importing).

Behaviorism answered 26/5, 2017 at 12:5 Comment(0)
M
0

A quick workaround which worked for me:

  • Add the static modifier to your method signature ("forces" compilation error through just in time compilation on all references)
  • Refactor the method name (the errors remain)
  • Remove the static modifier (recompiles with changed method signature, errors gone...)
Mujik answered 15/11, 2018 at 6:0 Comment(0)
C
0

I solved by doing below steps Window --> preferences --> java --> uncheck "rename in editor without dialog"

Cyclo answered 13/1, 2023 at 12:20 Comment(0)
R
0

I experienced this same issue when trying to refactor a function name, the following steps worked for me but I cannot verify the cause is the same as the original question.

Steps:

  1. Close Project
  2. Open Project
  3. Right Click the Project and select Index>>Freshen All Files
  4. Now select Index>>Rebuild

Restarting Eclipse had no impact on me, I suspect Freshen All Files did most of the work. Hopefully this works for someone!

Religionism answered 30/1, 2023 at 17:30 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.