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

Java 对多个项目使用公共源文件夹,并避免绝对路径,java,eclipse,classpath,relative-path,Java,Eclipse,Classpath,Relative Path,我需要有一个lib项目(myLib)和几个应用程序项目,它们应该使用myLib的源代码。我在配置Eclipse时遇到问题 所需的项目树如下所示: myProject /src ..some files.. /bin myLib /src ..some files.. /bin <classpathentry kind="src" path="../myLib/src"/> 现在我正试图配置myProject的类路径,使其使用myL

我需要有一个lib项目(myLib)和几个应用程序项目,它们应该使用myLib的源代码。我在配置Eclipse时遇到问题

所需的项目树如下所示:

myProject
   /src
      ..some files..
   /bin

myLib
   /src
      ..some files..
   /bin
<classpathentry kind="src" path="../myLib/src"/>
现在我正试图配置
myProject
的类路径,使其使用
myLib/src
中的源代码

如果我使用Eclipse的GUI添加链接源(UPD:我这样添加了到源文件夹的链接:右键单击项目->构建路径->配置构建路径->转到“源”选项卡->按按钮“链接源…”->指定到
myLib/src
的路径和文件夹名称:“
lib\u 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>
<?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
这样的行:

myProject
   /src
      ..some files..
   /bin

myLib
   /src
      ..some files..
   /bin
<classpathentry kind="src" path="../myLib/src"/>

然后Eclipse认为.classpath已完全中断,并将其重置为以下空白默认值:

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

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


如何实现这一点?

我不确定您是如何添加项目引用的,但在我的例子中,路径是相对的

这是一个名为
Adarsh
的项目的
.classpath
,它引用了另一个名为
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构建路径>项目并添加
myLib
raroscope
),如下所示


将.project文件中链接资源的路径替换为:

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

lib_src
2.
父-1-项目位置/myLib/src

PARENT-1
修饰符导致Eclipse从项目目录路径中查找一个目录以查找库目录。

谢谢,您的解决方案适用于我的特殊情况,但无论如何,我试图找到指定公共源文件夹的方法,即使该文件夹位于任何项目之外。目前,您的路径“/raroscope”依赖于工作区:要使其工作,您的工作区中必须有“raroscope”项目。它肯定比普通的绝对路径好,但我仍在尝试找到指定路径的方法,如
。/myLib/src
。但是,再次感谢您,现在您的解决方案对我来说是可以接受的。顺便说一下,我更新了我的问题:我指定了添加源代码的方式。很高兴它有帮助。您可能还想探索如何在Eclipse中创建用户变量。