如果我对某些内容进行重构重命名,它会尝试暂时执行,但之后只需将其恢复为以前命名的内容即可。没有错误或任何迹象表明出现了问题。
我刚刚重启Eclipse,现在情况更糟。之前,至少选择 Refactor>重命名将“包装”该名称,并假装它让你做一个重构。现在,重新启动后,选择 Refactor>重命名什么都不做。
Win7 64位
Eclipse Indigo build 20110615-0604
答案 0 :(得分:5)
尝试从Eclipse中删除项目(不要删除磁盘上的项目内容),然后重新加载它。
答案 1 :(得分:4)
我想在这里为其他答案添加一些信息。
Archenoth's answer指出您可以通过重命名操作运行预览来获取更多信息。我花了一些时间来弄清楚如何进行预览:再次键入重命名键击以获得对话框。有时预览没有提供错误信息(没有ppoup也没有快速重命名),但是在对话框中点击OK确实说了更多。
MutantXenu通过进入工作区中的文件在日志中找到信息,但您也可以通过转到错误日志视图(来自Cmd-3)在Eclipse中找到这些信息
当我遇到这个问题时,错误日志指出了这个失败的断言:"搜索方法声明没有找到原始元素"这导致了一些未解决的错误。 (我正在运行开普勒,但问题显然难以复制,我也看不到它已经解决的证据。请参阅here和here。
通过选择方法并使用Cmd-G(或Ctrl-G:搜索>声明>工作区),您可以查看是否遇到此特定错误。 Eclipse无法找到您尝试重命名的方法,搜索结果为空。
我的案例表明,错误可能与不同类中具有相同名称的方法有关。当使用一种方法出现问题时,它不会影响大多数其他方法。
刷新,项目 - >清理,重新启动Eclipse对我没有帮助。 Kevin's answer为我工作:"尝试从Eclipse中删除项目(不要删除磁盘上的项目内容),然后重新加载它。"
答案 2 :(得分:3)
虽然直接在编辑器中重命名方法在极少数情况下不起作用,然后IDE按下返回键后恢复orignal方法名称 - 一种“不可知模式”:-),当我通过重构执行相同操作时 - &gt ; 更改Methode签名,在右上角我更改方法名称,然后收到完整详细的错误消息:“执行重构时出现意外异常...原因:匿名#1 in。 ......在lambda#1 ... in ...工作副本......不存在。“
这表明,当在lambda或匿名类的上下文中使用要重命名的方法时,重命名方法会触发此失败。
要检查,注释掉lambda或匿名类中的出现,重构/重命名可以按照预期的方式工作。
答案 3 :(得分:1)
Eclipse Helios遇到了这个问题。我查看了工作区的.metadata目录并打开了.log文件。它有一个很长的与错误相关的参考链,但相关部分是:
java.lang.NoClassDefFoundError:org / eclipse / jdt / core / IMethod
和
java.lang.reflect.InvocationTargetException at 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)at 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后,问题就消失了,我能够再次正常重构/重命名。
答案 4 :(得分:1)
如果项目中有任何错误,重构将无法工作。
修复错误,或者只是将检测到的部分注释为错误才能运行重构。
这对我有用。
答案 5 :(得分:1)
我也一直在努力解决这个问题。当我查看Eclipse的错误日志视图时,我注意到每次我尝试重命名变量或方法时,我都遇到了这种异常:
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)
我注意到这一切都是从SWT库开始的。试图更新SWT,但由于某些原因我甚至无法安装SWT。 所以我只需通过帮助安装 SWT工具 3.106.0.v20170503-0851 - >安装新软件,很高兴解决了这个问题。
答案 6 :(得分:0)
当我尝试重命名变量和方法名称时,我看到了与OP完全相同的问题。重新启动Eclipse后,Refactor-> Rename功能正常工作。
答案 7 :(得分:0)
如果某些不太明显的事情导致重构失败,您可以通过尝试预览重构而不是尝试执行它来查找问题。
正如Dicky Moore所提到的,你不能在项目中重构错误......但这些并不总是代码错误或构建Eclipse标记的路径问题。所以有时它似乎没有任何错误,它仍然会失败。如上所述,“预览”将在错误对话框中显示这些问题,即使它们从未出现在其他地方。
从那里,你可以配置你的项目来修复错误(一个常见的是重构试图考虑它不应该的输出文件夹,可以通过排除{{1}中的文件夹来修复设置。)或卸载有问题的插件。
答案 8 :(得分:0)
4.4(Luna),我在大型重构后遇到了跨项目重构问题 - 删除了/.metadata/.plugins/org.eclipse.jdt.core 文件夹为我修复了
答案 9 :(得分:0)
有同样的问题:
我在Windows上运行它:
我已修复'行为:
项目中没有错误,当日志挂起并且从工作区删除/重新导入项目时也没有任何明显的错误(并且在重新导入之前删除.classpath .project和.settings)。
答案 10 :(得分:0)
尝试以下(只为我工作):
答案 11 :(得分:0)
对我有用的快速解决方法: