Eclipse 无法清理构建输出

6
我有一个Eclipse(4.4.1)工作集,包含大约60个项目(数字可能相关,因为刷新工作区需要更多时间)。偶尔,我会遇到构建失败的情况,因为Eclipse无法在构建之前清除输出文件夹:Eclipse build problem 原来锁定文件的进程就是Eclipse本身:enter image description here 锁定的文件始终是XML内容。特别地,如果我将资源定义为扩展名为*.foo的XML文件(通过Preferences -> General -> Content Types),则它们一旦被复制到输出路径,也很有可能被锁定。 我认为问题是由于自动验证所有XML资源造成的:-- 因此,我首先添加了排除过滤器,甚至完全禁用了XML/XSD验证。该问题停止发生那么频繁,但仍然不时出现。 刷新或关闭重新打开项目并没有帮助。唯一的解决办法是重新启动Eclipse或每半小时运行Unlocker,这并不是很方便。 有什么想法可以解决或至少进一步诊断这个问题吗?

2
这听起来像是一个很好的问题可以向Eclipse社区提问,因为它非常像Eclipse中的一个bug。 - Mike 'Pomax' Kamermans
作为可能的原因,请检查TaskManager是否有任何在构建失败期间处于活动状态的额外java.exe进程。我相信我曾经遇到过类似的问题。 - Compass
1
“暂停所有验证器”对你有用吗?我知道这很冒险,但你真的想一直验证所有的XML吗? - ha9u63a7
@hagubear 已经尝试过了。不幸的是,它并没有起作用。 - Bass
5个回答

3

仅个人意见。

也许你可以通过以下步骤来解决这个问题:

  1. 项目 -> 属性 -> 构建器 -> 新建 -> 程序
  2. 定义一个自定义的 "清理" 程序,例如 Unlocker 或您自己的 Java 或 CMD 脚本
  3. 将您的自定义构建器程序上移。 它应该是列表中的第一个构建器

P.S. 有时我也会遇到由 Avira Antivirus Scanner 引起的类似问题...


2

禁用第三方版本控制守护程序(例如TGitCache)。

它们只会短暂锁定资源,并且在进程管理器中不可见,但是它们是此类故障最常见的原因。


那也是我的想法。所以我禁用了 TGitCache.exe,甚至“取消共享”了我的项目。但问题仍然存在。 - Bass

1
假设 XML 验证是您问题的主要原因,我建议您在项目配置中扩展验证点以关闭所有验证点:
  • 常规首选项 / 验证
  • 常规首选项 / XML / XML 文件 / 验证(“尊重所有模式位置”选项可能会导致验证延迟)
  • 项目首选项 / 验证(检查它们;可能会覆盖一般偏好设置)
  • 项目首选项 / 构建器 / 验证器
希望能有所帮助。

对不起,Bass,但我不明白:如果我的回答对您没有帮助,我猜您误将赏金授予了我。 - Little Santi
不,没有错误。我相信你的回答是最接近真相的。WST/WTP存在问题,而XML验证是该插件的一个功能。 - Bass

1
我曾经遇到过类似的问题。是的,项目数量可能是原因。关闭不使用的项目。如果这样清理了一些东西,将相关项目组合到单独的工作空间中应该能帮助你解决问题。
即 文件-> 关闭项目

谢谢您的评论。问题在于我实际上正在使用这些项目。 - Bass

1
我不熟悉这个问题,但我会这样解决问题:
  1. 下载 File Leak Detector
  2. 将代理路径添加到您的eclipse.ini文件中(例如,-javaagent:path/to/file-leak-detector.jar=http=19999,请参阅File Leak Detector的文档)。
  3. 当问题再次发生时,请查看哪个(eclipse)类负责持有文件的句柄。
  4. 找出持有句柄的类的目的是什么。
这样,您可能能够确定导致问题的Eclipse功能。

谢谢,_文件泄漏检测器_可能是一个很棒的工具,但在我的电脑上它会导致任何JVM连接崩溃。 - Bass

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接