Eclipse说:“正在使用或无法创建的工作区,请选择不同的工作区。”如何解锁工作区?

当我启动时,Eclipse显示“工作区不能被锁定”

“无法启动产品,因为相关的工作空间目前正在被另一个Eclipse应用程序使用”或“工作空间正在使用或无法创建,请选择另一个工作空间。”

但我知道它不是。

我如何“解锁”它?

244728 次浏览

只需删除eclipse工作区目录中的.metadata目录中的.lock文件。

预防措施 -如果你删除.metadata文件夹,所有首选项将被删除。

还有另一种情况,工作空间的路径可能不存在,例如,如果您从另一个工作空间导入了首选项,那么一些导入的工作空间地址可能会出现在您的“开放工作空间”对话框中;然后,如果您不注意这些地址,一旦您试图打开它们,就会得到完全相同的错误。

另一个可能的原因,“工作空间在使用或无法创建,选择了一个不同的”问题是到您的工作空间的实际路径可能已经改变

在我的例子中,工作空间的真实位置已经改变了,但是我使用了一个符号链接使它看起来像是在相同的位置。我在日志中看到错误,表明eclipse正在查看之前的“真实”位置,而不是遵循符号链接,这就是导致错误的原因。

在我的例子中,我只是将工作空间移回原来的位置。

进入任务管理器(在任务栏中单击右键),选择进程菜单栏,选择eclipse.exe,单击EndProcess

@Boris给出的答案在99%的情况下是正确的,但是如果您在旧版本的Eclipse中打开工作区,也可能发生这种情况。用Juno导入/创建的工作区在Galileo中打开时将抛出此错误。

到目前为止,我已经看到了3个其他修复:

  1. 在.metadata/, rm .lock文件中
  2. 如果#1不起作用,尝试杀死进程javaw.exe等,然后rm .lock文件
  3. 如果#1和#2不工作,尝试rm .log文件在.metadata/,并再次检查.plugin/。
  4. 这对我来说一直都很有效:重新定位.metadata/,打开和关闭eclipse,然后覆盖。metadata

解决方案可以归结为清理.metadata文件夹。

导致这个问题的另一个非常常见的原因是,如果您试图加载一个不再连接的驱动器上的目录。例如,假设你用C:\Code\Java编程,但偶尔在H:\Code\Java闪存驱动器上工作。如果你没有连接驱动器,很容易相信你正在尝试加载一个有效的目录,而没有注意到你的打字错误。

有时,如果你在Windows上,你可能看不到所有的进程——或者在任务管理器中看不到罪魁祸首进程。我必须点击“显示所有用户的进程”,我必须杀死这个java.exe,以便回到我的工作空间。

另一个问题是eclipse没有对src文件夹的写访问权。更改安全权限,确保添加“已验证用户”,并检查所有权限,但完全控制&特殊权限。

Administrator Mode中运行eclipse为我修复了它。你可以通过安装目录下的eclipse.exe中的[右键单击]->以管理员身份运行来实现。

我在win7机器的工作环境中具有限制性权限。我还删除了.lock.log文件,但这并没有帮助。它也可以是所有这些因素的结合。

如果没有工作,另一个可能的情况是看到有一个正在运行的Java应用程序。可能是您以前的打开和关闭留下了未杀死的Java实例。

  1. 如果有两个java实例,请检查是否有正在运行的java实例,至少需要杀死一个。但是,大多数时候我杀死任何java运行:),因为java使用的工作空间更早,如果不杀死它仍然会。

  2. 如果您想要多个IDE用于不同或相同的项目,请更改另一个工作空间,但您应该在打开IDE后导入项目窗体工作空间。

我有这个错误后,我重新启动系统(经过很长一段时间。通常我只是让它睡觉)。 发现一旦我挂载驱动器(通过单击并打开它)项目文件夹所在的位置,并重新启动eclipse,为我解决了这个问题

PS:我是ubuntu用户。

下面是解决这个问题的几个步骤。4步对我来说很有用。

  1. 删除。metadata文件夹下的.log文件。
  2. 检查当前用户权限,确保选中完全控制复选框,然后单击应用确定。
  3. 如果在运行eclipse编辑器之前运行系统驱动器碎片整理或维护,有时原始文件路径不在各自的路径中,以确保运行“以前版本”时间,然后再对保存了eclipse工作台或类似内容的驱动器进行系统维护。
  4. 最后一个选项对我有用。 检查保存代码编辑器的当前驱动器的驱动器号。如果有什么不寻常的,例如在你的维护之前,你的驱动器号是K,然后整理或维护。 驱动器号现在是L,因此您应该将驱动器号更改为原来的K。 点击ff: 打开控制面板 系统,安全 管理工具 计算机管理 磁盘管理 在磁盘mngt中选择驱动器示例L 然后右键点击>更改驱动器号&路径>单击删除>,然后确定,再次打开它,然后>单击添加,>选择该驱动器的原始驱动器号,然后单击确定。如果你使用你的电脑很长一段时间,请先重新启动以刷新所有内容。李< / >

删除日志和.lock不起作用,但是

抹杀的选项为我修复了它。

选择一个“不同的”实际上是一个相当简单的解决方案。

我一直以管理员身份运行Eclipse(从命令行运行sudo eclipse),因为“工作区”文件夹抛出了Workspace in use or cannot be created…错误(以管理员身份运行似乎是修复它的唯一解决方案)。

一位同事(与我一起处理相同的问题)希望通过单击图标来运行Eclipse。所以当他运行Eclipse时,对话框出现了“选择您的工作区”,他只是在“工作区”后面加了一个“2”。

这将创建一个新文件夹:"workspace2"。《Eclipse》运行得很好;从那以后,我再也没有出现过锁的问题。

当您没有正确关闭eclipse.exe时,就会发生这种情况。

*打开任务管理器->结束任务你的eclipse->现在打开eclipse.exe它将工作。

希望它能帮助到别人。

我观察到一个例子,当eclipse在强制退出时,或linux中的Alt-f2 xkilled,尝试立即打开eclipse显示该错误。甚至元数据/。锁文件在这种情况下不存在。 然而,它在大约两分钟后开始工作

当eclipse没有关闭时(从任务管理器或计算机关机时杀死eclipse进程),我就会面临这个问题,我尝试了以下步骤,它对我有用。

1)删除以“”开头的文件名。fileTable”

C: \ eclipse \ \ org.eclipse.osgi.manager配置

2)从该文件夹中删除日志文件,如以数字名称开头的文本文件

C: \ eclipse \配置

3)打开命令提示符(cmd)导航到此文件夹

C: \ eclipse

键入下面的命令

Eclipse干净启动

enter image description here

Mac用户:

可能是另一个eclipse实例正在后台运行。如果是,使用Force Quit eclipse或

ps -ef |grep eclipse
kill -9 pid

到所有eclipse实例,并启动新的工作空间

我不知道出了什么问题,但我通过直接在c驱动器(c:\dev)中创建一个目录来解决,而不是从我的主文件夹(c:\users\me\dev)。但我不用多想。在我的情况下,它是新的eclipse解压缩实例。我无法在eclipse文件夹中看到.matadata文件夹。感谢上帝的恩典,我解决了。

使用选项-Dosgi.locking=none启动Eclipse。

我得到了技巧在这里和它的工作。

不要这样做,除非您知道没有人可以同时处理同一个文件。

这发生在我身上的原因(用Photon)很容易通过改变Eclipse的一般偏好来解决:

Window -> Preferences -> General: Uncheck: "Always run in background"

一旦进行了更改,无论何时关闭Eclipse,它都将不再让javaw.exe进程在后台运行。我猜这是Photon中的一个bug(或者是使用Amazon Corretto OpenJDK版本的Java和Eclipse的bug),总有一天会被修复。

我也遇到了同样的问题,但由于某些原因,工作空间中的.lock文件没有被删除。甚至创建一个新的工作空间也会被锁定。

所以我所做的是清理窗口temp文件夹,%PREFETCH%文件夹和%TEMP% locations。重新启动系统,然后允许删除.lock文件。

也许它会帮助别人。

看起来你的工作空间是在Java TM中使用的,打开任务管理器并关闭eclipse.exe和Java TM进程。

请尝试从任务栏结束任务Eclipse。这对我很管用。

对我来说,有效的方法是重新启动系统。(ubuntu 20.04)

如果有人有STM32Cube相关的问题,这显然是基于Eclipse的,有同样的问题,以上的建议对我都不适用,这里是我如何修复它,对于Linux,尽管我想你也可以在Windows中找到相应的路径。

$HOME目录下,进入.eclipse/com.st.stm32cube.ide.../configuration/settings

org.eclipse.ui.ide.prefs文件包含很少的选项,包括最近的工作空间路径,以及它是否会提示你在启动时选择一个工作空间。修改RECENT_WORKSPACES的路径,或者启用SHOW_WORKSPACE_SELECTION_DIALOG

在我的例子中,在工作区的位置 C:\之前有一个空格。我删除了那个空间,这就足够了:)