由于.lock而无法打开Eclipse工作区

时间:2014-05-29 01:18:36

标签: java eclipse

每次打开Eclipse时,都会说我的工作区目录无法加载,删除" .lock"我的工作区目录中的元数据文件夹中的文件允许我访问它。但.lock文件不断出现,每次我尝试打开Eclipse并加载该工作区时都必须删除它。什么可能导致这种或可能的方法来解决它的想法?

我使用的是Ubuntu 14.04。由于愚蠢的原因,我的eclipse在桌面目录上(无法使eclipse.exe可执行,因为我的驱动器是ntfs或类似的东西)

2 个答案:

答案 0 :(得分:3)

.lock文件是Eclipse检查另一个正在运行的实例是否正在使用工作空间的方式。该算法基本上是这样的:启动时,

  • 如果不存在.lock文件,则创建一个文件,Eclipse继续加载工作区。如果由于某种原因无法创建,则加载工作区将失败。
  • 如果存在.lock文件,Eclipse会尝试删除它。
    • 如果文件可以删除,Eclipse会这样做,重新创建它(在当前正在运行的进程中建立一个新的" hold"并加载工作空间。)
    • 如果文件可以被删除,那么Eclipse假定它是因为它被另一个实例进程锁定("保持")并报告工作空间在使用。

因此,一旦Eclipse在该工作空间中运行至少一次,.lock文件将始终存在于工作空间目录中。这是一个问题,事实上它是如何设计的。在你的情况下,听起来Eclipse在启动时无法删除文件,这表明存在NFS或其他文件系统问题。你在用Samba吗?我在this bug中读到了一些评论,这些评论表明Samba可能是此类神秘文件锁定问题的根源。

答案 1 :(得分:0)

另一个想法。由于您正在运行Ubuntu,因此您可以创建一个启动脚本,在实际运行Eclipse之前删除.lock文件。我不知道你的设置细节,所以这是一个草稿。你可能需要修改它。

# Delete the lock file
rm /home/ch/workspace/.lock
# Start Eclipse
/usr/bin/eclipse

唯一的缺点是您需要从命令行运行Eclipse。虽然我相信你可以将脚本放在Unity的启动器中,或者在后台运行,这样关闭终端窗口就不会杀死Eclipse。

一些注意事项:

  • 如果.lock文件不存在,rm命令将打印出错误消息,但不会发生任何事情。
  • 如果您没有从Ubuntu软件中心安装Eclipse(例如,手动下载),您可能找不到Eclipse /usr/bin/eclipse