无法在Eclipse中重构重命名

时间:2012-07-08 00:37:07

标签: java eclipse refactoring rename

如果我对某些内容进行重构重命名,它会尝试暂时执行,但之后只需将其恢复为以前命名的内容即可。没有错误或任何迹象表明出现了问题。


我刚刚重启Eclipse,现在情况更糟。之前,至少选择 Refactor>重命名将“包装”该名称,并假装它让你做一个重构。现在,重新启动后,选择 Refactor>重命名什么都不做。

Win7 64位
Eclipse Indigo build 20110615-0604

12 个答案:

答案 0 :(得分:5)

尝试从Eclipse中删除项目(不要删除磁盘上的项目内容),然后重新加载它。

答案 1 :(得分:4)

我想在这里为其他答案添加一些信息。

Archenoth's answer指出您可以通过重命名操作运行预览来获取更多信息。我花了一些时间来弄清楚如何进行预览:再次键入重命名键击以获得对话框。有时预览没有提供错误信息(没有ppoup也没有快速重命名),但是在对话框中点击OK确实说了更多。

MutantXenu通过进入工作区中的文件在日志中找到信息,但您也可以通过转到错误日志视图(来自Cmd-3)在Eclipse中找到这些信息

当我遇到这个问题时,错误日志指出了这个失败的断言:"搜索方法声明没有找到原始元素"这导致了一些未解决的错误。 (我正在运行开普勒,但问题显然难以复制,我也看不到它已经解决的证据。请参阅herehere

通过选择方法并使用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.BusyIndi​​cator.showWhile(BusyIndi​​cator.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)

有同样的问题:

  • 左键单击java类中的属性名称
  • 右键单击
  • 重构
  • 重命名
  • 进行重命名
  • 按enter
  • 绿色进度条显示在页脚菜单上但从未完成
  • 要恢复我必须杀掉eclipse(你可以尝试退出但是在保存工作台状态时会挂起)

我在Windows上运行它:

  • 版本:Kepler Service Release 2
  • 构建ID:20140224-0627

我已修复'行为:

  • 对文件进行少量更改
  • 保存文件
  • 重试了重构并且工作正常(尽管有一个令人不舒服的延迟等待重构完成大约五秒钟)

项目中没有错误,当日志挂起并且从工作区删除/重新导入项目时也没有任何明显的错误(并且在重新导入之前删除.classpath .project和.settings)。

答案 10 :(得分:0)

尝试以下(只为我工作):

  1. 删除项目
  2. 创建一个名称相同的新java项目

答案 11 :(得分:0)

对我有用的快速解决方法:

  • 将static修饰符添加到方法签名中(通过在所有引用上进行及时编译来“强制”编译错误)
  • 重构方法名称(错误仍然存​​在)
  • 删除静态修饰符(使用更改的方法签名重新编译,错误消失了……)