JavaEclipse:“重构重命名”完全搞砸了,替换了文件中的任意字符
在重构类名时,Eclipse最近表现出一种非常奇怪的行为。例如,让我们看一下我们的一个类:
public class CampaignCSVPanel extends ContentPanel {
private FileUploadField uploadFieldCsv = new FileUploadField();
...
}
我将其重命名为“CampaignCsvPanel”,然后发生以下情况:
public class CampaignCSVPanel extends ContentPanel{
private FileUploadField uploadFielCampaignCsvPanelploadField();
...
}
奇怪-基本上每次执行类重命名时都会发生。更重要的是:
- 我已经创建了一个全新的工作区(并再次签出了相同的项目)
- 我安装了一个新版本的Eclipse(即Eclipse 3.6和3.7中都有)李>
我想,它肯定与工作区中的项目有关,因为它只发生在我工作的一家公司的项目上,而不发生在我工作的其他项目上。你知道原因是什么吗
(系统规格:
- Ubuntu Linux 11.04,64位
- Eclipse 3.6/3.7
- 插件:Subversive、m2eclipse、Google(GWT)插件李>
- 我尝试了OpenJDK和SunJDK(1.6.0_24)。 )
# 1 楼答案
试试这个:
转到Windows->;偏好->;Java并取消选中“在编辑器中重命名而不使用对话框”
(我正在查看EclipseIndigo的最新版本,我只假设设置与以前版本相同)
现在,您可以预览它打算进行的所有更改
如果您能做到这一点,并在对话中验证它正在进行一些疯狂的替换,那么您应该向Eclipse提交一个bug,并提供可复制的示例。不过,我敢打赌,一旦你看一看它打算取代的东西清单,你就会找到问题的其他解释
# 2 楼答案
我发现了问题:该项目使用了类似
$Date: $
的svn标记。当我删除它们时,问题就消失了。当我手动重新插入它们(以确保不插入无效字符)时,问题再次出现我进行了更多的实验,当我将SVN连接器从JavaHL切换到SVNKit时,问题也消失了
# 3 楼答案
真烦人。显然,重构引擎知道它必须替换某些东西,但替换错误位置的字符…-没有答案,但有一些额外的想法/测试