目录C:\ eclipse \ configuration \ org.eclipse.osgi中无法锁定

时间:2011-11-21 16:21:50

标签: eclipse

我以前在我的受限用户帐户(即非管理员)中使用Eclipse 3.5.2。

但是当我升级到3.6.2时,Eclipse拒绝在受限用户帐户中运行(它只在管理员下运行)。

它发出以下错误:

  

目录中无法锁定   C:\蚀\配置\ org.eclipse.osgi。一个常见的原因是   文件系统或运行时环境不支持文件锁定   那个位置。请选择其他位置,或禁用文件   锁定传递“-Dosgi.locking = none”作为VM参数。   C:\蚀\配置\ org.eclipse.osgi.manager.fileTableLock   (访问被拒绝)

好吧,我检查了该文件夹的所有者(Windows XP)并且它是管理员,因此访问权限当然会被拒绝。

但是......为什么不在Eclipse 3.5.2中发生这种情况?

我可以通过分配整个C:\eclipse\configuration\org.eclipse.osgi的所有权来解决这个问题,但不明白为什么,我不知道是否需要为其他文件夹执行此操作。

另一种解决方法是执行错误消息建议:禁用文件锁定将-Dosgi.locking=none作为VM参数传递。但我不知道会有什么权衡(锁定是有原因的,对吧?它是什么?)

如果我理解锁定的目的是什么,我可以明智地选择上面列出的2种解决方法之一。

12 个答案:

答案 0 :(得分:16)

这与在多用户环境中运行Eclipse有关,首先在多用户安装上阅读this Eclipse help section。安装Eclipse时,它是作为管理员帐户完成的。这意味着可以访问configuration文件夹,Eclipse认为这是共享配置或私有安装。因为这个Eclipse会首先尝试将数据写入配置目录,但对于普通用户来说会失败。

您要做的是让Eclipse意识到您有共享安装安装,并且所有配置数据都应该在用户主目录中。

有关详细信息,请参阅this similar questionthis IBM support answer

答案 1 :(得分:14)

Juno版本遇到了同样的问题。

几年前,我创建了一个完美运行的多用户环境,但事情随着时间而变化。现在,我明显的解决方案是改变权限,根本不起作用。

问题是锁定文件具有777不会更改的特殊权限。此外,仅将777提供给任何UNIX系统(Linux,AIX等)内的目录并不是最佳解决方案。然后,我解决了另一个问题。

在Eclipse目录中,您可以找到eclipse.ini文件。在那里你可以放入vm参数,尽管Eclipse建议的参数不起作用。

我的环境开始使用这个:

-Dosgi.configuration.area=@user.home/.eclipse

这样,运行Eclipse程序的环境中的每个用户都将在特定的home中创建一个不同的.eclipse目录,具有完全权限和零问题。

我希望这对“在UNIX方面”的每个人都有用。

答案 2 :(得分:8)

正确修复

确保将Eclipse和工作空间的权限更新为Eclipse运行的任何用户。您可以在eclipse运行时使用ps -ef | grep -i eclipse来查找该用户。 拥有该用户后,您可以轻松使用chown -R user:group ~/Documents/workspace**

Hacky修复

  1. 在任何安装它的地方更改eclipse本身的权限(在我的情况下为/ opt /):

      

    sudo chmod -R 770 / opt / eclipse

  2. 更改工作空间的权限,无论您身在何处(在我的情况下〜/ Documents /):

      

    sudo chmod -R 770~ / Documents / workspace

  3. 希望这有助于我的Linux用户!

    您可以使用正确的语法在Windows上尝试此操作。

    感谢Frederik的帮助!

答案 3 :(得分:4)

我不会chmod来解决这个问题。在我的情况下,在为一些RTC文件而不是我的用户ID安装Rational Team Concert之后,所有者是root:root。转到用户的主目录和ls -ltr以查看您的用户ID和组ID是什么(在Ubuntu上都是相同的)然后在您的eclipse子目录中执行以下操作

sudo chown -R myuserid:groupid /opt/ibm/eclipse

答案 4 :(得分:3)

尝试在映射的网络驱动器中创建工作区时遇到此问题。

一种选择是使用./eclipse -vmargs -Dosgi.locking=none从终端启动Eclipse。

另一种选择是将osgi.locking=none添加到Eclilpse配置文件夹中的config.ini文件中。

第二个选项更方便,但副作用是允许任意数量的Eclipse实例运行相同的工作区。

答案 5 :(得分:2)

我只是在config.ini文件中添加了osgi.locking = none,它开始工作了。谢谢大家的帮助..

答案 6 :(得分:1)

谁拥有该目录的写入权限:C:\ eclipse& C:\ eclipse \ configuration?

AFAIK eclipse在启动时决定是使用中央安装作为配置位置,还是根据eclipse(或可能是配置)目录是否可写而使用用户可访问的目录。

答案 7 :(得分:1)

只需将您的eclipse文件夹复制并粘贴到当前登录用户空间中的文件夹中(如果您很难找到其中一个正确的文件夹,只需将其放在C:\ Documents and Settings \ your_user_account_name中)。仅在那里创建一个新的工作区文件夹 为我工作....!

答案 8 :(得分:1)

这是此消息出现的另一个原因。检查似乎是一件明显的事情,但是如果在.fileTableLock文件上设置了只读标志(这是在Windows中,不知道Linux)那么你也会得到Access Denied错误。这是因为我们将预先配置的工作空间和配置解压缩到用户的IDE环境中。

答案 9 :(得分:1)

在Windows上,一个简单的解决办法是以管理员身份启动Eclipse。

右键单击Eclipse图标,然后单击以管理员身份运行。

它将解决您的问题。

享受:)

答案 10 :(得分:0)

我在具有管理员ID的服务器上运行时遇到了类似的问题。

降低UAC并重新启动服务器修复它。

答案 11 :(得分:0)

在Windows上,我发生了同样的错误消息,因为我在关闭UAC 2年后重新启用了UAC。我刚刚删除了。锁定文件eclipse抱怨..并在UAC弹出窗口时按下继续..然后重新打开eclipse ..一切都很好。