对多个项目使用公共源文件夹,并避免使用绝对路径

时间:2012-05-02 08:46:29

标签: java eclipse classpath relative-path

我需要一个lib-project(myLib)和几个应该使用myLib源代码的应用程序项目。我在配置Eclipse方面遇到了麻烦。

所需的项目树是这样的:

myProject
   /src
      ..some files..
   /bin

myLib
   /src
      ..some files..
   /bin

现在我正在尝试配置myProject的类路径,以使其使用来自myLib/src的来源。

如果我使用Eclipse的GUI添加链接源( UPD:我添加了链接到源文件夹的方式:右键单击项目 - > 构建路径 - > 配置构建路径 - > 转到“来源”标签 - > 按下按钮“链接来源...” - > 指定myLib/src和文件夹名称的路径:“lib_src),然后我获得了myLib/src的绝对路径,即以下内容:

myProject/.classpath

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="src" path="lib_src"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

myProject/.project

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>data_manager__gui</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>org.eclipse.jdt.core.javabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>org.eclipse.jdt.core.javanature</nature>
    </natures>
    <linkedResources>
        <link>
            <name>lib_src</name>
            <type>2</type>
            <location>/HERE/IS/FULL/PATH/TO/myLib/src</location>
        </link>
    </linkedResources>
</projectDescription>

正如我已经说过的,我需要避免绝对路径。因此,我需要指定路径myLib/src../myLib/src

然后我尝试手动指定myLib / src的路径,但是如果我添加 .classpath 这样的行:

<classpathentry kind="src" path="../myLib/src"/>

然后Eclipse认为.classpath完全被破坏,并将其重置为以下空白默认值:

<classpath>
    <classpathentry kind="src" path=""/>
    <classpathentry kind="output" path="bin"/>
</classpath>

然后我尝试更改 .project 文件中的路径,但似乎 .project 文件中完全不支持相对路径: Eclipse无法找到我的myLib/src,我尝试了很多变体。

如何实现这一目标?

2 个答案:

答案 0 :(得分:3)

我不确定你是如何添加项目引用的,但在我的情况下,路径是相对的。

这是名为.classpath的项目的Adarsh,它引用了另一个名为raroscope的Java项目。

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
    <classpathentry combineaccessrules="false" kind="src" path="/raroscope"/>
    <classpathentry kind="lib" path="geocoder-java-0.9.jar" sourcepath="geocoder-java-0.9-sources.jar"/>
    <classpathentry kind="lib" path="commons-logging.jar"/>
    <classpathentry kind="lib" path="gson-2.1.jar"/>
    <classpathentry kind="lib" path="commons-lang.jar"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

您应该右键单击项目myProject,选择Java Build Path&gt;项目并在此处添加myLibraroscope),如下所示。

enter image description here

答案 1 :(得分:0)

使用以下命令替换.project文件中链接资源的路径:

<linkedResources>
    <link>
        <name>lib_src</name>
        <type>2</type>
        <locationURI>PARENT-1-PROJECT_LOC/myLib/src</locationURI>
    </link>
</linkedResources>

这是PARENT-1修饰符,它使Eclipse从库目录的项目目录路径中查找一个目录。