Question

I am using shift+alt+r to rename a javascript variable.

"Enter new name, press enter to refactor" comes up in a tooltip.

When I press enter, the refactoring should occur, but instead the variable name is reverted to what it was before.

Why?

I got a question about what the error log shows. Here it comes:

java.lang.reflect.InvocationTargetException
    at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:421)
    at org.eclipse.ui.internal.WorkbenchWindow$13.run(WorkbenchWindow.java:1812)
    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
    at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:1809)
    at org.eclipse.wst.jsdt.internal.ui.refactoring.RefactoringExecutionHelper.perform(RefactoringExecutionHelper.java:172)
    at org.eclipse.wst.jsdt.ui.refactoring.RenameSupport.perform(RenameSupport.java:191)
    at org.eclipse.wst.jsdt.internal.ui.refactoring.reorg.RenameLinkedMode.doRename(RenameLinkedMode.java:329)
    at org.eclipse.wst.jsdt.internal.ui.refactoring.reorg.RenameLinkedMode$EditorSynchronizer.left(RenameLinkedMode.java:103)
    at org.eclipse.jface.text.link.LinkedModeModel.exit(LinkedModeModel.java:341)
    at org.eclipse.jface.text.link.LinkedModeUI$4.run(LinkedModeUI.java:1193)
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4145)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3762)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1113)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:997)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:138)
    at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:610)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:567)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1426)
Caused by: java.lang.NullPointerException
    at org.eclipse.wst.jsdt.internal.core.search.matching.MatchLocator.locateMatches(MatchLocator.java:1125)
    at org.eclipse.wst.jsdt.internal.core.search.matching.MatchLocator.locateMatches(MatchLocator.java:1186)
    at org.eclipse.wst.jsdt.internal.core.search.matching.MatchLocator.locateMatches(MatchLocator.java:1309)
    at org.eclipse.wst.jsdt.internal.core.search.JavaSearchParticipant.locateMatches(JavaSearchParticipant.java:104)
    at org.eclipse.wst.jsdt.internal.core.search.BasicSearchEngine.findMatches(BasicSearchEngine.java:264)
    at org.eclipse.wst.jsdt.internal.core.search.BasicSearchEngine.search(BasicSearchEngine.java:513)
    at org.eclipse.wst.jsdt.core.search.SearchEngine.search(SearchEngine.java:243)
    at org.eclipse.wst.jsdt.internal.corext.refactoring.RefactoringSearchEngine.internalSearch(RefactoringSearchEngine.java:138)
    at org.eclipse.wst.jsdt.internal.corext.refactoring.RefactoringSearchEngine.search(RefactoringSearchEngine.java:125)
    at org.eclipse.wst.jsdt.internal.corext.refactoring.rename.RenameNonVirtualMethodProcessor.getOccurrences(RenameNonVirtualMethodProcessor.java:129)
    at org.eclipse.wst.jsdt.internal.corext.refactoring.rename.RenameMethodProcessor.doCheckFinalConditions(RenameMethodProcessor.java:353)
    at org.eclipse.wst.jsdt.internal.corext.refactoring.rename.RenameNonVirtualMethodProcessor.doCheckFinalConditions(RenameNonVirtualMethodProcessor.java:82)
    at org.eclipse.wst.jsdt.internal.corext.refactoring.rename.JavaRenameProcessor.checkFinalConditions(JavaRenameProcessor.java:43)
    at org.eclipse.ltk.core.refactoring.participants.ProcessorBasedRefactoring.checkFinalConditions(ProcessorBasedRefactoring.java:224)
    at org.eclipse.ltk.core.refactoring.Refactoring.checkAllConditions(Refactoring.java:162)
    at org.eclipse.wst.jsdt.internal.ui.refactoring.RefactoringExecutionHelper$Operation.run(RefactoringExecutionHelper.java:69)
    at org.eclipse.wst.jsdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:39)
    at org.eclipse.wst.jsdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:742)
    at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2345)
    at org.eclipse.wst.jsdt.core.JavaScriptCore.run(JavaScriptCore.java:3844)
    at org.eclipse.wst.jsdt.internal.ui.actions.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:83)
    at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Root exception:
java.lang.NullPointerException
    at org.eclipse.wst.jsdt.internal.core.search.matching.MatchLocator.locateMatches(MatchLocator.java:1125)
    at org.eclipse.wst.jsdt.internal.core.search.matching.MatchLocator.locateMatches(MatchLocator.java:1186)
    at org.eclipse.wst.jsdt.internal.core.search.matching.MatchLocator.locateMatches(MatchLocator.java:1309)
    at org.eclipse.wst.jsdt.internal.core.search.JavaSearchParticipant.locateMatches(JavaSearchParticipant.java:104)
    at org.eclipse.wst.jsdt.internal.core.search.BasicSearchEngine.findMatches(BasicSearchEngine.java:264)
    at org.eclipse.wst.jsdt.internal.core.search.BasicSearchEngine.search(BasicSearchEngine.java:513)
    at org.eclipse.wst.jsdt.core.search.SearchEngine.search(SearchEngine.java:243)
    at org.eclipse.wst.jsdt.internal.corext.refactoring.RefactoringSearchEngine.internalSearch(RefactoringSearchEngine.java:138)
    at org.eclipse.wst.jsdt.internal.corext.refactoring.RefactoringSearchEngine.search(RefactoringSearchEngine.java:125)
    at org.eclipse.wst.jsdt.internal.corext.refactoring.rename.RenameNonVirtualMethodProcessor.getOccurrences(RenameNonVirtualMethodProcessor.java:129)
    at org.eclipse.wst.jsdt.internal.corext.refactoring.rename.RenameMethodProcessor.doCheckFinalConditions(RenameMethodProcessor.java:353)
    at org.eclipse.wst.jsdt.internal.corext.refactoring.rename.RenameNonVirtualMethodProcessor.doCheckFinalConditions(RenameNonVirtualMethodProcessor.java:82)
    at org.eclipse.wst.jsdt.internal.corext.refactoring.rename.JavaRenameProcessor.checkFinalConditions(JavaRenameProcessor.java:43)
    at org.eclipse.ltk.core.refactoring.participants.ProcessorBasedRefactoring.checkFinalConditions(ProcessorBasedRefactoring.java:224)
    at org.eclipse.ltk.core.refactoring.Refactoring.checkAllConditions(Refactoring.java:162)
    at org.eclipse.wst.jsdt.internal.ui.refactoring.RefactoringExecutionHelper$Operation.run(RefactoringExecutionHelper.java:69)
    at org.eclipse.wst.jsdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:39)
    at org.eclipse.wst.jsdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:742)
    at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2345)
    at org.eclipse.wst.jsdt.core.JavaScriptCore.run(JavaScriptCore.java:3844)
    at org.eclipse.wst.jsdt.internal.ui.actions.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:83)
    at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Was it helpful?

Solution

I think it's clear for you now, that the refactor has failed and because it's an NPE it's probably a bug in the JavaScript Development Tools.

I'd suggest opening a bug at https://bugs.eclipse.org/bugs/buglist.cgi?component=General&product=JSDT&resolution=--- in Product JSDT, Component General. You'll need to provide a (preferably minimal) js file where this bug surfaces.

Meanwhile try downloading a newer Eclipse/JSDT (no need to upgrade, just create another Eclipse folder and try to refactor your code there) maybe it's already fixed you're just not using the latest version.

Also worth trying just a restart of Eclipse (close all open files prior to restart).

Note: I've moved to Sublime because the JS editor in Eclipse didn't give me proper support/was buggy.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top