30

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

Lii
  • 11,553
  • 8
  • 64
  • 88
Mike Dannyboy
  • 462
  • 1
  • 4
  • 13
  • 1
    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... – arcy Jul 08 '12 at 00:53
  • 1
    Also verify if the project has any compile error. Sometime with compile errors it does not let you refactor things. – vikas Jul 08 '12 at 12:20
  • 1
    This happened to me when attempting rename on a Javascript method. JSDT is installed. Removing and adding project did not help. – Nilzor Dec 12 '13 at 21:09
  • 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](https://stackoverflow.com/q/63534117/589259) for details. And don't forget to vote those up. Of course, regardless of the crash, it should not open "Run...". – Maarten Bodewes Nov 22 '21 at 10:43

15 Answers15

20

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.

Markus Pscheidt
  • 6,853
  • 5
  • 55
  • 76
  • 2
    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. – Shadyar Apr 19 '22 at 09:44
  • 2
    @Shadyar 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 version – Markus Pscheidt Apr 19 '22 at 14:50
  • 3
    I also had same probem was with Lombok 1.18.6 & Eclipse 2022-03. Update Lombok to the latest version helps. – Gmugra May 04 '22 at 07:40
  • 2
    Same thing here, Lombok was 1.18.14 after update to 1.18.24 solved, thanks! – Renan Ribeiro May 24 '22 at 16:42
  • 1
    Same error with Lombok `1.18.20`. Resolved by updating to `1.18.26`. – Balint G. May 24 '23 at 13:01
7

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

Kevin
  • 164
  • 2
  • 4
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."

Community
  • 1
  • 1
Joshua Goldberg
  • 5,059
  • 2
  • 34
  • 39
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.

Hartmut Pfarr
  • 5,534
  • 5
  • 36
  • 42
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.

  • 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. – Ellen Spertus Apr 01 '18 at 20:44
  • You can get the site-url to use in Help > Install_New_Software from here: https://www.eclipse.org/swt/updatesite.php - I used the milestone-update-site: http://download.eclipse.org/eclipse/updates/milestones – Curtis Yallop Mar 01 '19 at 18:54
  • @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. – Curtis Yallop Mar 01 '19 at 19:02
  • 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. – Curtis Yallop Mar 01 '19 at 19:07
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.

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.

Dicky Moore
  • 956
  • 3
  • 10
  • 32
1

Try the following (just worked for me):

  1. Delete the project
  2. Create a new java project with the same name
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.

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.

Archenoth
  • 354
  • 5
  • 14
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

nickle
  • 71
  • 4
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).

Moika Turns
  • 677
  • 11
  • 17
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...)
Alex
  • 1
  • 1
0

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

duag
  • 1
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!

RustinH
  • 21
  • 2