我可以在Eclipse中使用变量引用Java源路径吗

我可以在Eclipse中使用变量引用Java源路径吗,java,eclipse,configuration,Java,Eclipse,Configuration,背景 我正在使用Eclipse4.2(Juno)版本为Java应用程序构建插件。我的插件的源代码和类都位于项目工作区中。由于各种原因,应用程序jar及其源代码在eclipse工作区之外进行维护,应用程序jar由另一种构建机制生成 这不是问题,因为我在项目中使用拖放和“链接到文件”选项引用了应用程序jar文件,并指定它“创建链接位置相对于:MYDEV”,其中MYDEV是我为每个Eclipse安装创建的链接资源变量。这允许我在多台机器上使用相同的eclipse项目,其中应用程序jar的路径不同,但相

背景

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

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

但是,除非使用绝对路径,否则我无法找到将应用程序源代码与这个jar关联的方法。我只希望出于调试目的访问应用程序源

问题


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

这是我能做到你建议的唯一方法(不知道是否有更好的方法)

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

在eclipse项目中,右键单击JAR文件,转到“属性”,然后转到“Java源代码附件”,从中选择“工作区”按钮,然后选择JAR文件以及我们从上述步骤中添加的源代码

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

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


希望这能有所帮助。

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

  • 在包含JAR和源代码文件的目录中,在eclipse中创建一个简单的项目

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

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

  • 当其他用户希望使用与您相同的设置设置eclipse工作区时,他们将做两件事

  • 将包含JAR和源的项目导入其工作区

  • 将用户库导入他们的workpsace


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


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

    所以,问题是eclipse不允许您指定源代码的相对路径?您是否尝试过在
    .classpath
    文件中手动更改它?是的。当我刷新项目时,它只是抱怨它不是有效的路径。我也尝试了${MYDEV}和$MYDEV的所有组合。有趣的是,关于“源附件属性”的帮助部分建议使用变量选项,但在使用“Java源附件”时没有。好的,这可能是可行的,谢谢。我仍然不明白为什么它会以不同的方式对待这些事情,也就是说,为什么我可以使用一个变量来引用jar而不是它的源代码。也许开发人员以前没有想到过这个用例。这可能是值得张贴的好主意。我已经发送了错误报告,可以在这里跟踪进度。谢谢。但是,您似乎仍然需要使用绝对路径来引用源,即使它现在指向符号链接。因此,相同的路径在linux和windows之间不起作用。此外,在windows中,您必须使用“mklink”命令才能使用链接(快捷方式不起作用),这通常需要管理员访问。符号链接目录是相对于eclipse项目的,因此他可以相对地而不是绝对地引用它。如果mklink需要管理员访问windows(如果他使用的是windows),他将不得不使用sudo或其他类似的工具。我想,作为一名开发人员,他可能拥有自己计算机的root访问权限。对不起,是的,如果你记得刷新项目,这确实有效!因此,解决方法是在项目区域中创建链接,然后通过工作区位置链接它。非常感谢。是的,我可以看到它正在工作,但它似乎正在解决Eclipse中的一个潜在缺陷。