【问题标题】:How to use relative paths for projects added to an Eclipse workspace?如何为添加到 Eclipse 工作区的项目使用相对路径?
【发布时间】:2011-07-07 21:58:25
【问题描述】:

我正在处理一些存储在 USB 密钥上的 Eclipse 项目。我已将它们添加到其根文件夹也在 USB 密钥上的工作区,但项目并不直接位于此目录中。因此,它们的绝对路径写入工作区的 .projects 文件夹中。

当我在多台计算机上使用该密钥时,这会引发问题,因为分配给 USB 密钥的驱动器号并不总是相同(我不想在所有计算机上都为其分配一个特定的字母)。当我将项目添加到工作区时,当驱动器号与 USB 密钥不同时,Eclipse 无法打开我的项目。

这个问题有解决办法吗?具体来说,有没有办法让 Eclipse 使用工作空间文件夹中的相对路径将项目添加到工作空间?

【问题讨论】:

    标签: eclipse path


    【解决方案1】:

    真的没那么难。您只需分配一个指向WORKSPACE/..; 的新变量。例如,您可以使用 Forge Minecraft 模组包 - 它有一个工作区,无论在什么机器上下载它、放置在哪里,甚至移动它,它都可以立即准备就绪。

    下载这个: http://files.minecraftforge.net/minecraftforge/minecraftforge-src-1.6.2-9.10.0.789.zip

    然后解压并运行install.bat/cmd。然后检查 forge/mcp/eclipse/Minecraft/{.project,.workspace} 的内容以查看一些示例。

    我的工作空间像这样在 github 上工作。

    【讨论】:

    • 这里,我会让它变得更简单:paste.ubuntu.com/5905914 我的树看起来像这样:[projects]/regal/eclipse/regal,我的 lib、javadoc 和 src 文件夹都在 [ projects]/regal/ 我可以将它复制到另一个 pc/mac/linux 盒子,如果我将 eclipse 工作区指向 [orojects]/regal/eclipse,它仍然可以工作
    • 如果在 Windows 上并且变量直接指向驱动器,例如 D:\,我发现我必须输入像 D:\.\.\ 这样的傻东西才能使更改生效正常工作,否则 Eclipse 会自动从路径名中去除尾随的 \,这会导致错误的位置解析。
    【解决方案2】:

    根据我的经验,如果您尝试“破解” eclipse 的元数据,它有时会崩溃。

    考虑 windows 中的substcommand(当你提到驱动器号时,我假设 windows)

    创建一个包含

    的bat文件
    subst N: .
    

    运行它会将当前目录挂载为 N: 所以你可以把它放在 USB 驱动器上,并在运行 eclipse 之前运行它,那么你总是会在驱动器 N 上找到相同的内容:

    要移除挂载,请执行

    subst /D N:
    

    你可以考虑制作一个 bat 文件,挂载 N:,启动 eclipse 并在 eclipse 退出后卸载 N: 类似

    startMyProject.bat:

    subst N: .
    N:/eclipse <yadayada options>
    subst /D N:
    

    【讨论】:

    • 我用这个作为我的解决方案,效果很好,不需要像其他一些解决方案那样需要管理员权限。
    【解决方案3】:

    简短的回答是,如果不破解您的工作区元数据(在[workspace.dir]/.metadata 下),您就无法做到这一点。 Eclipse 工作空间并非设计为可移植的,即使您没有实际移动您的工作空间,您实际上是通过更改驱动器号来移动它。

    我建议您设法将您的项目置于workspace.dir 之下。不能保证你不会有问题,但可能会提高你的几率。根据您使用的 Eclipse 的哪些功能,您很可能会在工作区元数据中使用其他类型的绝对路径。

    【讨论】:

    • 谢谢。我确实在考虑破解 org.eclipse.core.resources 中 .projects 文件夹的“.location”文件,但我想这会使工作区变得不稳定。
    【解决方案4】:

    这个问题有点老了,但有一种完全不同的方法:您可以从 Eclipse 期望项目的文件夹创建一个连接,例如 E:\foo\workspace\myproject 并将其链接到项目所在的位置,例如 E:\bar\myproject

    Junction 本质上意味着您可以通过 2 个不同的路径访问同一个文件夹,因此您不必担心 Eclipse 的奇怪的相对路径限制。为了方便快捷地创建它,我建议您获取Link Shell Extension

    【讨论】:

      【解决方案5】:

      我自己没有尝试过,但这可能会奏效。试试看:
      将您的源文件夹添加为链接资源并删除以前的定义: http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.platform.doc.user/tasks/tasks-45.htm

      关闭 eclipse 并在工作区中找到您的项目文件夹(例如:C:\Documents and Settings\username\workspace\yourproject\)将文件 .project.classpath 中的绝对路径替换为相对路径。

      【讨论】:

      • 你错了。这些文件不包含任何路径,我需要修改的是workspace数据中项目路径的记录。
      • 你说得对,我更新了我的建议。现在.project 文件应该包含链接源的路径。
      • 如果您在项目中添加了一些库,.classpath 包含绝对路径。
      猜你喜欢
      • 1970-01-01
      • 2010-11-28
      • 2017-11-09
      • 2021-08-15
      • 1970-01-01
      • 1970-01-01
      • 2018-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多