Подтвердить что ты не робот

Зависимости веб-проектов Eclipse

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

Я создал новый динамический веб-проект и связал его с другим проектом Java. Проект Java ссылается на несколько сторонних баннеров (например, Spring jars), но по некоторым причинам при публикации веб-проекта я получаю только Java-проект jar в lib dir войны без зависимостей проекта Java (например, Spring).

Другими словами, у меня есть проект A (веб-проект), который зависит от проекта B (Java Project), проект B зависит от флагов Spring. Когда я публикую веб-проект в качестве войны с JBoss, только проект B упаковывается в банку (без Spring банок)

Я знаю, что могу сделать это с помощью ant, у меня даже есть такой build.xml для создания всего приложения, но я думал, что eclipse также может выполнять задачу упаковки для меня.

Я добавил проект Java к зависимостям модуля Java EE в веб-проекте.

Должен ли я использовать параметр экспорта в свойствах пути построения проекта Java? Должен ли я добавлять зависимости проекта Java к веб-проекту?

Что я делаю неправильно?

Изменить: я использую Eclipse 3.5.1

4b9b3361

Ответ 1

  • Перейдите в свойства веб-проекта.
  • Развертывание сборки (слева).
  • Добавить > Выбрать проект > Выбрать проект lib > Проверить "Собирать проекты в папку WEB-INF/lib веб-приложения", если не отмечен > Готово.
  • Путь сборки Java (слева) > вкладка "Проекты" > "Добавить..." > выберите проект lib > OK
  • Путь сборки Java (слева) > вкладка "Заказ и экспорт" > Выберите проект библиотеки.
  • Сохранить
  • Теперь это работает.

Ответ 2

Я знаю, что прошло четыре года со времени последнего сообщения, и, возможно, этот вариант не был доступен тогда, но вот что сработало для меня:

  • Перейдите в веб-проект- > Свойства
  • Развертывание сборки
  • Используйте кнопку "Добавить", чтобы добавить зависимость от проекта.
  • Перейдите в Project- > Properties для проекта, в зависимости от
  • Deployment Assembly
  • Используйте кнопку "Добавить", чтобы добавить зависимости библиотеки выполнения проекта
  • Web Project- > Run As..- > Run On Server, и это сработало для меня.

Будем предупреждать, что шаги 4-6 означают, что если вы используете eclipse для создания файла jar, теперь он будет включать ваши зависимые библиотеки в эту банку.

Спасибо rodgarcialima за то, что помогли мне добраться до шага 3.

Ответ 3

Я добавил проект Java к зависимостям модуля Java EE в веб-проекте.

Если целью является принятие зависимостей (чтение: JAR файлы/проекты/etc) другого проекта в путь класса выполнения текущего проекта, то только этот способ не работает. Вам нужно настроить другой проект на экспортировать его зависимости. Это делается на вкладке "Заказ" и "Экспорт" в свойствах пути сборки. Надеюсь, это поможет.

Ответ 4

Также обратите внимание на эту ошибку, сообщенную в Eclipse WTP, которая иногда препятствует развертыванию ваших зависимостей в WEB-INF/lib, даже если вы все правильно настроили. Вздох.

Ошибка 312897 - Функция развертывания не устанавливает зависимости типа classpath.

Как я понимаю, чтобы использовать JAR во время компиляции в Eclipse и убедиться, что он также доступен во время выполнения на сервере приложений, вы:

  • Добавьте JAR в путь сборки
  • Отметить JAR как зависимость экспортированного EE-модуля

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

Но не принимайте мой ответ по номиналу, когда я наткнулся на этот пост, ища причину, по которой я получаю ошибки NoClassDefFound в моем проекте Eclipse...;)

Ответ 5

Перед развертыванием вы должны упаковать свое веб-приложение в WAR файл. Должен быть способ сообщить Eclipse, какие JAR файлы вы хотите разместить в каталоге WEB-INF/lib. Если нет, напишите Ant build.xml, который сделает это за вас.

Вам не нужно изменять какие-либо переменные pathpath в вашей среде или на сервере приложений. Правильный способ сделать это - создать правильный файл WAR.

ОБНОВЛЕНИЕ: я перечитываю ваш вопрос:

но по некоторым причинам при публикации веб-проекта я получаю только java-проект jar в lib-каталоге JBoss без его javascript-зависимостей (например, Spring).

Что это значит? Вы не должны помещать что-либо в каталог JBOSS/lib. Весь смысл файла WAR состоит в том, что он представляет собой самосодержимый артефакт, который несет во всех своих зависимостях. Если вы пытаетесь записать материал в каталог JBOSS/lib, вы делаете это неправильно.

Файл WAR должен войти в домен, который вы создали. Не нужно изменять сервер приложений.

Ответ 6

Если вы правильно поняли, проблема в том, что если вы используете проект A, который, в свою очередь, зависит от проекта B, вы не получаете артефакты из проекта B, а только A.

Проблема заключается в том, что ваш проект должен отображать ВСЕ, что ему нужно, в свойствах Свойства → Java EE, что является отдельным механизмом из обычного экспорта проекта. Вероятно, вам придется провести некоторое экспериментирование.