Как проинструктировать Eclipse для записи относительных путей внешних банок?

Вот мой файл .classpath, после того как я добавил еще два внешних баночки (org.restlet.ext.simple.jar и org.simpleframework.jar):

<?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 kind="lib" path="../3rd_party/restlet-jse-2.0.10/lib/org.restlet.ext.jackson.jar" sourcepath="C:/Program Files/Java/restlet-jse-2.0.10/src">
        <attributes>
            <attribute name="javadoc_location" value="file:/C:/Program Files/Java/restlet-jse-2.0.10/docs/ext/"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="lib" path="../3rd_party/restlet-jse-2.0.10/lib/org.restlet.ext.ssl.jar" sourcepath="C:/Program Files/Java/restlet-jse-2.0.10/src">
        <attributes>
            <attribute name="javadoc_location" value="file:/C:/Program Files/Java/restlet-jse-2.0.10/docs/ext/"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="lib" path="../3rd_party/restlet-jse-2.0.10/lib/org.restlet.jar" sourcepath="C:/Program Files/Java/restlet-jse-2.0.10/src">
        <attributes>
            <attribute name="javadoc_location" value="file:/C:/Program Files/Java/restlet-jse-2.0.10/docs/api"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="lib" path="../3rd_party/restlet-jse-2.0.10/lib/org.jsslutils_1.0/org.jsslutils.jar"/>
    <classpathentry kind="lib" path="../3rd_party/restlet-jse-2.0.10/lib/org.codehaus.jackson_1.4/org.codehaus.jackson.core.jar"/>
    <classpathentry kind="lib" path="../3rd_party/restlet-jse-2.0.10/lib/org.codehaus.jackson_1.4/org.codehaus.jackson.mapper.jar"/>
    <classpathentry kind="lib" path="../3rd_party/guice-3.0/aopalliance.jar"/>
    <classpathentry kind="lib" path="../3rd_party/guice-3.0/guice-3.0.jar"/>
    <classpathentry kind="lib" path="../3rd_party/guice-3.0/javax.inject.jar"/>
    <classpathentry kind="lib" path="C:/dev/poc/3rd_party/restlet-jse-2.0.10/lib/org.restlet.ext.simple.jar" sourcepath="C:/Program Files/Java/restlet-jse-2.0.10/src">
        <attributes>
            <attribute name="javadoc_location" value="file:/C:/Program Files/Java/restlet-jse-2.0.10/docs/ext/"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="lib" path="C:/dev/poc/3rd_party/restlet-jse-2.0.10/lib/org.simpleframework_4.1/org.simpleframework.jar"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

Обратите внимание, что они добавлены с абсолютными путями, в отличие от других записей, которые относятся к относительным, но только потому, что я вручную редактирую этот файл каждый раз, когда добавляются новые внешние банки.

Мой вопрос: могу ли я как-то сказать Eclipse использовать относительные пути вновь добавленных внешних банок?

Спасибо.

Ответ 1

Одно из решений заключается в том, чтобы не использовать внешние банки, а чтобы помещать ваши банки в проект, а затем использовать Add Jar (s) вместо Add External Jar (s).

Это имеет смысл с точки зрения управления версиями, вы можете добавлять/удалять зависимости по мере необходимости. Это также означает, что когда вы обновляете одну банку для отдельного проекта, это не повлияет на это.

Мы это делали в прошлом, у нас был единственный проект, в котором содержались все баночки, на которые ссылались в пути построения других проектов.

Но теперь мы используем maven, поэтому нам больше не нужно это делать.

Ответ 2

В eclipse щелкните правой кнопкой мыши проект, выберите Свойства, затем Настроить путь Java, Библиотеки и выберите " Добавить Jars"... это добавит его с относительным путем. " Добавить внешние JAR" добавляет банку абсолютный путь, который не является тем, что вы хотите.

Ответ 3

Если ваши пути относятся к вашей установке Eclipse, объявите их с помощью кнопки "Добавить переменную…" (в [Проект] → Свойства → Путь сборки Java → Библиотеки). Там вам должна быть предложена переменная с именем ECLIPSE_HOME, которую вы затем можете ECLIPSE_HOME. Это создаст запись "kind = var" в вашем .classpath (вместо "kind = lib").

<classpathentry kind="var" path="ECLIPSE_HOME/...

Если ваши пути относительно где-то еще, вы можете объявить свои собственные переменные (Настроить переменные). Таким образом, когда ваше рабочее пространство изменяется или кто-то делает его копию, вам просто нужно обновить эти переменные. Это часто яснее, чем наличие истинных относительных путей, начинающихся с одной или двух точек.

Ответ 4

Чтобы добавить относительный путь в файл .classpath в eclipse, выполните следующие действия.

1) Щелкните правой кнопкой мыши на вашем проекте → нажмите на меню "Создать" и выберите подменю "Папка" → введите имя папки в появившемся диалоговом окне → и нажмите "Готово".

2) Теперь перейдите в рабочее пространство eclipse → Возьмите все файлы jar с жесткого диска и вставьте их в папку lib ИЛИ вы также можете скопировать файлы jar → щелкните правой кнопкой мыши на папке lib → выберите меню вставки из списка и вставьте его ,

3) После вставки щелкните правой кнопкой мыши проект в eclipse → Нажмите на Build Path → Выберите подменю Configure Build Path → В появившемся диалоговом окне перейдите на вкладку библиотеки и нажмите кнопку Add JAR...... → Выбрать папку lib и выберите все банки внутри папки lib → затем нажмите Apply и Close.

Вот оно, Готово !! Вы добавили файлы jar в classpath, используя относительный путь !!!