如何在Eclipse中更改项目的位置指针?

72

项目已经移动到另一个位置,因此Eclipse无法打开该项目。您可能会立即考虑更改指向该位置的指针,但在Eclipse中,由于某种原因,他们试图使这个过程变得不可能。

您不能在 Project Explorer 属性中更改项目位置。

你可以进入 [workspace]/eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/ProjectName 并尝试编辑 .location,这是指向项目的指针,但这个文件被存储为二进制意味着人类不易读懂。

如何更改这个 .location,有没有工具可以做到?还有其他方法 简单地 将我的旧项目条目指向新位置?


可能是Eclipse更改项目文件位置的重复问题。 - kerner1000
11个回答

110

从Eclipse中删除该项目。

确保在删除期间取消选择复选框

然后通过 文件 -> 导入 -> 导入现有项目,并从新位置选择该项目进行导入。

不要尝试手动修改Eclipse文件!


1
当我删除项目时,我的项目特定设置不是在我的工作区中吗?这样它们就会丢失了吗? - Redsandro
10
重要提示:在删除项目时,选择“不”删除磁盘上的项目。这样只会将其从您的工作空间中删除。 - Francis Upton IV
3
@Redsandro,项目特定设置存储在项目中而不是工作区中。当您重新导入项目时,设置应该是相同的。如果您有疑虑,请备份您的工作区并尝试一下。由于项目已被移动,弗朗西斯认为这应该是无关紧要的,但为了确保您是正确的,最好还是备份一下。 - Kai
粗体 不要 帮助你避免很多问题,我曾经吃过苦头。谢谢 Proctor 先生 :D - Alan
如何从Eclipse中删除项目的指令(适用于Kepler版本,但仍然适用)。请参考以下链接:http://help.eclipse.org/kepler/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2Ftasks%2Ftasks-42b.htm - faintsignal
这个答案需要进一步完善,以解释采用这种方式可能产生的任何副作用。这是否会对项目设置或Mylyn任务产生影响?有太多潜在的问题。 - Robert

31

简单得多:

右键点击 -> 重构 -> 移动


在软件包管理器中右键单击项目,然后在“构建路径”和“源”条目下方的第4个部分中查看“重构(Alt+Shift+T)”。 - Dan Dar3
10
这个命令非常适合移动那些在磁盘上处于Eclipse预期位置的项目;然而,如果代码已经被移动(正如问题所示),你不能使用这种技术,你需要使用@kai提供的答案:删除该项目并从新位置重新导入。 - thetoolman
这是唯一有用的答案。 - Gajotres
1
如果您已经移动了项目,您可以从旧位置创建符号链接到新位置。这样,Eclipse就可以在两个位置找到它,以便启动重构->移动操作。这对我很有效。 - dave
@Radon8472 重构选项应该存在,但你必须使用“包资源管理器”而不是“项目资源管理器”来查看它。 - Boann
显示剩余3条评论

19
您可以前往 [workspace]/eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/ProjectName 并尝试编辑 .location 文件,该文件是指向项目的指针,但是该文件被有意地存储为二进制文件。您应该编辑文件中的位置和一些二进制数据。需要编辑的二进制数据已经用粗体标出: 5D 55 52 49 2F 2F 66 69 6C 65 3A 2F 44 3A 2F 6D 61 64 64 61 68 2F 50 72 6F 6A 65 63 74 73 2F 46 6C 65 65 74 4D 61 6E 61 67 65 6D 65 6E 74 2F 54 79 70 65 73 2F 50 6F 72 74 61 62 6C 65 63 6F 64 65 2F 46 69 72 6D 77 61 72 65 2F 74 65 73 74 2F 43 50 50 2F 41 54 6D 65 61 67 38 4C 69 62 。文件的第 0x11 个位置是文件名的长度,您应该编辑它,其值是突出显示部分的长度。
此外,您还可以使用 ProjectLocationUpdater:https://marketplace.eclipse.org/content/projectlocationupdater/metrics

3
"ProjectLocationUpdate" 运作得非常好!而且它可以在多个项目中使用。 - gnom1gnom
1
ProjectLocationUpdater 运行得非常好。在此之前,我们只需要完成一个额外的步骤:由于我们要移动到不同的计算机且磁盘布局不同,因此我们必须移动到另一个驱动器+位置(从 D: 移动到 C:\dev):我们必须挂载旧文件夹位置,以便 Eclipse 使用 subst D: C:\dev 找到旧文件。(在 Linux/Max 上,符号链接就可以解决问题) - Jidehem
正确答案不应该是“编辑二进制数据”!右键单击,重构 --> 移动... 是正确的答案。 - David Koelle
当我从PC切换到Mac时,我不得不更新十几个项目... ProjectLocationUpdater 只需点击几下即可完成!太棒了! - Veloz
项目位置更新,好建议;-) - Marti Pàmies Solà

2
我知道这是一篇旧文章,但我想添加我的解决方案。我从另一台机器导入了许多项目到我的工作区。然而,由于某种原因,Eclipse错误地标记了项目的位置(使用映射路径而不是UNC路径),因此资源文件无法构建。这意味着每次我尝试在工作区内引用库时,它们都会变成绿色,然后变成红色并失败。尽管库和项目在同一个工作区中,并且我已经按照正确的导入程序进行了操作。
正如OP在属性下面提到的那样,有一个项目位置路径。我注意到项目位置不同,但出于某种奇怪的原因,Eclipse(在他们全能的智慧下)不允许您重新选择或更改路径。实际上,即使尝试重构->移动也会失败,因为该项目已经在工作区内(从未听说过为移动生成临时文件夹?)。
然而,在查看导入项目的文件结构后,我注意到Eclipse添加了一个.location文件(如上所述),而所有其他项目中都没有此文件。因此,我删除了.location文件,重新打开Eclipse,确保项目可以正确构建。
因此,在浪费了几个小时的时间之后,我现在能够工作了,希望这也可以帮助您节省一些麻烦。

2

我成功的做法总结(从其他答案和评论中提取)

  1. (仅在您已经移动了项目的情况下才需要)

    从旧位置创建到新位置的符号链接。

  2. 无论项目类型是什么(Java、Python等)

    • 打开“包资源管理器”视图(窗口 -> 显示视图 -> 其他 -> Java -> 包资源管理器)
    • 右键单击 -> 重构 -> 移动(在该包资源管理器中的相关项目内)
    • 选择新位置
  3. (如果在步骤1中创建了符号链接)

    删除符号链接。


这个非常好用,即使是针对MCUXpresso IDE(无论项目类型如何)也能正常工作。 - Keith Knauber

1
你可以使用十六进制编辑器更改.location文件。 但是,你不能简单地用新的文件位置字符串替换存储在那里的字符串。你还需要相应地编辑定义其长度(以字节为单位)的前导字节。然后你可以在Eclipse中重新打开项目。

1

我当时正在PyDev(Python)工作,但无法使用这个重构选项。我不得不切换到Java包管理器来完成此操作。完成后,我又切换回了PyDev。


0

诚然,这是一篇有点过时的文章,但我想提一下,当我将我的项目推送到一个新的 Github 存储库时出现了同样的问题,使用 Spring Tool Suite 3.9.7。结果,我不能在本地运行我的应用程序,不得不回滚项目位置。我曾经读过关于 git 删除项目文件的可怕故事,所以我进行了一些研究。大多数情况下,我选择了上面@kerner1000的答案,但加入了重要的补充说明。请参阅下面的步骤和说明。

  • 右键单击项目
  • 选择“重构”
  • 选择“移动…”
  • 勾选“使用默认位置”的复选框

注意:起初我尝试复制/粘贴重定位项目的路径,但 Eclipse 给了我一个覆盖错误。所以勾选复选框使得区别。


0

不建议更改 .location 文件。 如果您手动编辑 .location 文件,Eclipse 项目列表将被破坏。 我在修改文件后丢失了所有项目。


0
在Eclipse中,版本:2020-03 (4.15.0),您可以执行以下操作:
  1. 在项目名称上右键单击。
  2. 选择重构。
  3. 重命名。
  4. 指定将包含移动源的空文件夹

enter image description here


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