【问题标题】:Can I refer to a Java source path using a variable in Eclipse我可以在 Eclipse 中使用变量来引用 Java 源路径吗
【发布时间】:2012-06-26 18:57:14
【问题描述】:

背景

我正在使用 Eclipse 4.2 (Juno) 版本为 Java 应用程序构建插件。我的插件的源代码和类都位于项目工作区中。由于各种原因,应用程序 jar 及其源代码在 eclipse 工作区之外进行维护,并且应用程序 jar 是由另一种构建机制生成的。

这不是问题,因为我在项目中使用拖放引用了应用程序 jar 文件,并使用“链接到文件”选项指定它“创建相对于MYDEV',其中 MYDEV 是我为每个 Eclipse 安装创建的链接资源变量。这让我可以在多台机器上使用相同的 eclipse 项目,其中应用程序 jar 的路径不同,但相对于 MYDEV 始终相同。

但是,除非我使用绝对路径,否则我找不到将应用程序源代码与此 jar 关联的方法。我只想访问应用程序源以进行调试。

问题

在 Eclipse 中,如何将 java 源附加到引用的 jar 中,以允许项目在引用的源代码已被重新​​定位的多个安装中使用?

【问题讨论】:

  • 那么,问题是eclipse不会让你指定源的相对路径?您是否尝试在 .classpath 文件中手动更改它?
  • 是的。当我刷新项目时,它只是抱怨它不是有效的路径。尝试了 ${MYDEV} 和 $MYDEV 的每一种组合,我也能想到。有趣的是,“源附件属性”的帮助部分建议可以使用变量选项,但使用“Java 源附件”时没有。

标签: java eclipse configuration


【解决方案1】:

如果源在项目之外,那么没有绝对路径就无法访问它。

最好的解决方案是在 eclipse 项目目录中使用符号链接到实际的源文件夹; eclipse 不会注意到源代码在项目目录之外,一切都会正常工作,而无需重新定位源代码。

【讨论】:

  • 谢谢。但是,您似乎仍然需要使用绝对路径来引用源,即使它现在指向符号链接。因此,相同的路径不适用于 linux 和 windows。此外,在 Windows 中,您必须使用“mklink”命令才能使链接可用(快捷方式不起作用),这通常需要管理员访问权限。
  • symlinked目录是相对于eclipse项目的,所以他可以相对引用,而不是绝对引用。如果 mklink 需要 windows 上的管理员访问权限(并且如果他正在使用 windows),他将不得不 sudo 或任何等效项。我想作为一名开发人员,他可能拥有对自己计算机的 root 访问权限。
  • 抱歉,如果您记得刷新项目,这确实有效!因此,解决方法是在项目区域中创建一个链接,然后通过 Workspace Location 链接它。非常感谢。
【解决方案2】:

这是我能够按照您的建议做的唯一方法(不知道是否有更好的方法)。

打包一个包含 JAR 文件源代码的 JAR 文件。将它放在你的项目中的一个文件夹中(你不需要将它添加到你的类路径中)

在 Eclipse 项目中,右键单击 JAR 文件并转到“属性”,然后转到“Java 源附件” 从那里选择“工作区”按钮,然后选择包含我们在上述步骤中添加的源代码的 jar 文件。

因此源附件路径将始终与项目相关。这样,如果您通过 SVN、GIT 或其他方式共享项目,源代码将始终可用,并且如果用户在 Windows 或 Linux 上运行 eclipse,它将可以工作。

我遇到过与您类似的问题,绝对路径对于使用不同操作系统的人来说是个问题,甚至通过 Samba 使用映射驱动器也没有太大帮助。

希望这会有所帮助。

【讨论】:

  • 好的,这可能可行,谢谢。我仍然不明白为什么它似乎以不同的方式对待这些事情,即为什么我可以使用变量来引用 jar 而不是它的源代码。
  • 也许开发者之前没有想到这个用例。这可能值得在bugs.eclipse.org/bugs 上发布
  • 好主意。我已经发送了一个错误报告,可以在这里查看进度383491
【解决方案3】:

我解决这个问题的方法是在 Eclipse 中使用一个使用定义的库。以下是您可以用来解决此问题的步骤。

  1. 在 eclipse 中创建一个简单的项目,在包含 jars 和源代码文件的目录中。

  2. 定义一个 java 用户库将 jars 添加到用户库中,并为库中的每个 jar 指定源的位置。如果源文件位于工作区中的项目中,则路径将相对于工作区文件夹。

  3. 将用户库导出为 .xml 文件

当另一个用户想要使用与您相同的设置来设置 Eclipse 工作区时,他们会做两件事。

  1. 将包含 jar 和源代码的项目导入其工作区。

  2. 将用户库导入他们的工作区。

【讨论】:

  • 是的,我可以看到它可以工作,但它似乎确实可以解决 Eclipse 中的一个潜在缺陷。
猜你喜欢
  • 1970-01-01
  • 2012-07-14
  • 1970-01-01
  • 2012-07-23
  • 1970-01-01
  • 2016-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多