Eclipse buildpath автоматически принимает все JAR-файлы внутреннего каталога - PullRequest
20 голосов
/ 27 января 2009

Как настроить путь сборки моего проекта, чтобы набор файлов .jar, расположенных в том же каталоге, автоматически включался в путь сборки? Это означает, что добавление нового файла .jar в этот каталог (и обновление проекта) обновляет путь сборки? Rem: Я не работаю в Webapp, но в отдельном приложении Java. Я знаю, что в динамическом веб-проекте возможно, чтобы все файлы .jar, расположенные в WEB-INF / lib, были включены в путь сборки. Можно ли сделать то же самое, но в автономном приложении?

Я использую Eclipse 3.4

Ответы [ 10 ]

11 голосов
/ 27 января 2009

AFAIK, нет нормального способа сделать это.

Если вы действительно хотите, есть небольшой взлом. Файл Eclipse .classpath представляет собой очень простой XML. Вы можете написать скрипт или задачу муравья, которая переходит в каталог, обновляет .classpath xml и обновляет проект.

9 голосов
/ 27 января 2009

Использование самодельного «контейнера ClassPath» решает проблему, но требует от вас создания подключаемого модуля Eclipse: http://www.ibm.com/developerworks/edu/os-dw-os-eclipse-classpath.html

5 голосов
/ 31 мая 2010

Мой коллега реализовал контейнер classpath, который рекурсивно ищет jar-файлы в заданном каталоге в рабочей области, взгляните на http://openscada.org/2010/05/31/adding-a-directory-as-class-path-to-eclipse/

Сайт обновления можно найти по адресу http://repo.openscada.org/p2/bob/R

Плагин лицензирован под LGPL V3, и вы можете найти исходный код под https://github.com/ctron/org.openscada.bob

2 голосов
/ 27 января 2009

Используйте Maven2 и используйте плагин Eclipse Maven2.

1 голос
/ 27 января 2009

Это означает, что добавление нового файла .jar в этот каталог (и обновление проект) обновляет путь сборки

Извините, Eclipse не поддерживает это.

0 голосов
/ 26 января 2012

Я создал инструмент, который генерирует .classpath (и .project), но он требует, чтобы вы указали список jar-файлов в сборке ant. Вероятно, его можно расширить, чтобы прочитать список файлов jar.

http://sweetened.googlecode.com/

0 голосов
/ 17 августа 2010

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

<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/User Library name"/>

http://www.avajava.com/tutorials/lessons/what-is-a-user-library-and-how-do-i-use-it.html;jsessionid=ACD75E0A035BDC3AC656B481A7830FB6

0 голосов
/ 12 марта 2010

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

  1. Создание нового динамического веб-проекта (настройки по умолчанию в порядке, поэтому это быстро)
  2. Удалить каталог "lib" в WebContent / WEB-INF /
  3. Воссоздайте этот каталог, но создайте его как ссылку на каталог в вашем главном проекте, где находятся ваши фляги
  4. Проверьте параметр «Библиотеки веб-приложений» на вкладке «Порядок и экспорт» в настройках пути сборки Java вашего проекта
  5. Добавить этот вновь созданный проект в качестве зависимости от вашего основного проекта

Раздражительно делать это для каждого каталога lib в вашем проекте, но это лучше, чем добавлять jar-файлы вручную каждый раз, когда вы делаете svn-обновление (от ваших более удачных коллег, использующих Idea). Обидно, что в Eclipse такой функции нет.

0 голосов
/ 01 апреля 2009

На машине с Windows вы можете сделать то, что сказал Ужин, с помощью одной строки в командной строке.

Предположим, что вы установили в Eclipse переменную AXIS2_HOME, которая указывает на c: \ javalibs \ axis2-1.4.1, в этом примере команда «for» используется для итерации всех файлов .jar в c: \ javalibs. \ axis \ lib и записывает узлы .classpath в файл с именем addto.classpath. (Примечание: символ карата ^ экранируется от <и> в командной строке, поэтому они не делают то, что обычно делают.)

for %i in (c:\javalibs\axis2-1.4.1\lib\*.jar) do @echo     ^<classpathentry kind="var" path="AXIS2_HOME/lib/%~ni%~xi"/^>  >> addto.classpath

В результате вы получите что-то подобное в файле ...

<classpathentry kind="var" path="AXIS2_HOME/lib/activation-1.1.jar"/>
<classpathentry kind="var" path="AXIS2_HOME/lib/annogen-0.1.0.jar"/>
<classpathentry kind="var" path="AXIS2_HOME/lib/axiom-api-1.2.7.jar"/>
<classpathentry kind="var" path="AXIS2_HOME/lib/axiom-dom-1.2.7.jar"/>
...

Итак, вы можете скопировать эти строки и вставить их в очевидное место в реальном файле .classpath.

0 голосов
/ 27 января 2009

Вы пытались использовать подстановочный знак в пути к классам? Таким образом, вы бы использовали что-то вроде:

javac MyApp.java -cp /some/path/to/libraries/*.jar

Я некоторое время не использовал java, поэтому не уверен, что вышеперечисленное возможно, но это тот синтаксис, который я ожидал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...