有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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)。 )

共 (3) 个答案

  1. # 1 楼答案

    试试这个:

    转到Windows->;偏好->;Java并取消选中“在编辑器中重命名而不使用对话框”

    (我正在查看EclipseIndigo的最新版本,我只假设设置与以前版本相同)

    现在,您可以预览它打算进行的所有更改

    如果您能做到这一点,并在对话中验证它正在进行一些疯狂的替换,那么您应该向Eclipse提交一个bug,并提供可复制的示例。不过,我敢打赌,一旦你看一看它打算取代的东西清单,你就会找到问题的其他解释

  2. # 2 楼答案

    我发现了问题:该项目使用了类似$Date: $的svn标记。当我删除它们时,问题就消失了。当我手动重新插入它们(以确保不插入无效字符)时,问题再次出现

    我进行了更多的实验,当我将SVN连接器从JavaHL切换到SVNKit时,问题也消失了

  3. # 3 楼答案

    真烦人。显然,重构引擎知道它必须替换某些东西,但替换错误位置的字符…-没有答案,但有一些额外的想法/测试

    1. 看起来你签出了完整的项目。尝试仅将源导入新项目,以检查问题是否仍然存在或已消失
    2. 如果项目元数据已检入(不应该,但我们永远不知道),请在检出项目后立即清理项目
    3. 检查该公司源文件的字符编码。可能存在某种不匹配,导致编辑器在错误的位置进行替换。并仔细检查源文件是否有奇怪的无法打印的ascii字节。。。再说一次,我们永远不知道