21

如果我对某些东西进行重构重命名,它会尝试做一会儿,然后将其恢复为之前的名称。不显示任何错误或任何表明有问题的迹象。


我刚刚重新启动了 Eclipse,现在情况更糟了。之前,至少选择Refactor > Rename会将名称“装箱”并假装它允许您进行重构。现在,重新启动后,选择Refactor > Rename什么都不做。

Win7 64 位
Eclipse Indigo build 20110615-0604

4

12 回答 12

6

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

于 2012-10-12T22:24:12.647 回答
5

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

Archenoth 的回答指出,您可以通过在重命名操作上运行 Preview 获得更多信息。我花了一段时间才弄清楚如何进行预览:再次键入重命名键以获取对话框。有时预览没有给出错误信息(没有 ppoup 的快速重命名也没有),但在对话框中单击“确定”确实说明了更多信息。

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

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

您可以通过选择方法并使用 Cmd-G(或 Ctrl-G:搜索 > 声明 > 工作区)来查看您是否遇到此特定错误。Eclipse 无法找到您尝试重命名的方法,并且搜索结果为空。

我的案例表明错误可能与不同类中的同名方法有关。当使用一种方法出现问题时,它不会影响大多数其他方法。

刷新、Project->Clean 和重新启动 Eclipse 对我没有帮助。 凯文的回答对我有用:“尝试从 Eclipse 中删除项目(不要删除磁盘上的项目内容),然后重新加载它。”

于 2014-12-17T17:03:20.900 回答
4

虽然在极少数情况下直接在编辑器中重命名方法不起作用,然后 IDE 在按下返回键后恢复原始方法名称 - 一种“不可知模式”:-),但当我通过 Refactoring -> Change Methode Signature执行相同操作时,在右上角我更改了方法名称,然后我收到一条完整详细的错误消息:“执行重构时发生意外异常...原因:匿名 #1 in .... in lambda #1 ...在……工作副本……不存在。”

这表明,当要重命名的方法在 lambda 或匿名类的上下文中使用时,重命名方法会触发此失败。

要检查,注释掉 lambda 或匿名类中的出现,然后重构/重命名可以像我的情况一样按预期工作。

于 2015-03-02T12:10:15.903 回答
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) at org.eclipse.jface.window.ApplicationWindow$1.run(ApplicationWindow.java:759) at 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.internal.ui.refactoring.reorg.RenameLinkedMode 中的 org.eclipse.jdt.ui.refactoring.RenameSupport.perform(RenameSupport.java:197)。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) 在 org.eclipse.jface.text.link.LinkedModeUI$4.run(LinkedModeUI.java:1194) 在 org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) 在 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.爪哇:3660)341) 在 org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) 在 org.eclipse.swt 的 org.eclipse.jface.text.link.LinkedModeUI$4.run(LinkedModeUI.java:1194)。 widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) 在 org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4041) 在 org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3660)341) 在 org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) 在 org.eclipse.swt 的 org.eclipse.jface.text.link.LinkedModeUI$4.run(LinkedModeUI.java:1194)。 widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) 在 org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4041) 在 org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3660)

我去了Help > Install New Software > What is already installed,然后选择与 org.eclipse.swt 相关的所有内容并单击Uninstall。重新启动 Eclipse 后,问题消失了,我能够再次正常重构/重命名。

于 2013-06-01T15:45:46.380 回答
1

如果您的项目中有任何错误,重构将不起作用。

修复错误,或者只是注释掉被检测为错误的部分以运行重构。

这对我有用。

于 2013-10-14T21:22:42.010 回答
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 Tools 3.106.0.v20170503-0851 -> 安装新软件,很高兴地解决了这个问题。

于 2018-04-01T19:48:55.893 回答
1

尝试以下(对我有用):

  1. 删除项目
  2. 新建一个同名的java项目
于 2018-02-14T15:14:56.620 回答
0

使用 4.4 (Luna),我在大型重构后遇到了跨项目重构问题 - 删除 /.metadata/.plugins/org.eclipse.jdt.core 文件夹为我解决了这个问题

于 2014-10-04T01:07:46.923 回答
0

当我尝试重命名变量和方法名称时,我看到了与 OP 完全相同的问题。重新启动 Eclipse 后,Refactor->Rename 功能正常工作。

于 2013-02-18T21:12:30.553 回答
0

如果某些不太明显的事情导致重构失败,您可以通过尝试预览重构而不是尝试执行重构来查找问题。

正如 Dicky Moore 所提到的,您不能在项目中出现错误进行重构......但这些并不总是 Eclipse 标记的代码错误或构建路径问题。所以有时它看起来好像没有任何错误,但它仍然会失败。如上所述,“预览”将在错误对话框中显示这些问题,即使它们从未出现在其他地方。

从那里,您可以配置您的项目以修复错误(一个常见的问题是重构尝试解释它不应该考虑的输出文件夹,这可以通过在Build Path > Source设置中排除文件夹来修复。)或卸载有问题的插件.

于 2014-06-16T18:24:30.643 回答
0

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

  • 将静态修饰符添加到您的方法签名中(通过对所有引用进行即时编译“强制”编译错误)
  • 重构方法名称(错误仍然存​​在)
  • 删除静态修饰符(使用更改的方法签名重新编译,错误消失......)
于 2018-11-15T06:00:13.253 回答
0

有同样的问题:

  • 左键单击java类中的属性名称
  • 右键点击
  • 重构
  • 改名
  • 重命名
  • 按回车
  • 绿色进度条出现在页脚菜单上,但从未完成
  • 要恢复,我必须杀死 eclipse(您可以尝试退出,但在保存工作台状态时它会挂起)

我在 Windows 上运行它:

  • 版本:Kepler Service Release 2
  • 版本号:20140224-0627

我通过以下方式“修复”了该行为:

  • 对文件进行小改动
  • 保存文件
  • 重试了重构,它工作正常(尽管等待重构完成大约 5 秒有一个不舒服的延迟)

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

于 2017-05-26T12:05:07.027 回答