Я создал множество проектов в Eclipse 3.7.2. Давайте приведем некоторые из них имя:Транзитивные зависимости проекта в Eclipse WTP
- W (динамический веб-проект)
- A (некоторые библиотеки)
- B (библиотека с большим количеством общего материала, который используется в других проектах тоже)
Проект A зависит от проекта B, поэтому B находится в пути сборки A. Проект W зависит от проекта A, поэтому я добавил A как сборку развертывания в W.
Когда я экспортирую WAR из Eclipse, только JAR-файл для A добавляется в WEB-INF/lib. Eclipse показывает следующее предупреждение:
Элемент pathpath/B не будет экспортирован или опубликован. Runtime Это может привести к вызову ClassNotFoundException.
Предупреждение верно. Я получаю ClassNotFoundExceptions во время выполнения. Разумеется, Eclipse предоставляет быстрое исправление для предупреждения, которое является «Отметить связанную исходную запись класса пути как зависимость публикации/экспорта». Однако это не устраняет мою проблему. B до сих пор не разворачивается с W.
Я попытался вручную добавить B как сборку развертывания в A. Это включает в себя B.jar в A.jar, который не является тем, что я хочу, и я все еще получаю ClassNotFoundExceptions.
Единственное, что работает, - это вручную добавить B как сборку развертывания в W. Eclipse по-прежнему показывает предупреждение сверху, но исключения во время выполнения исчезли.
Я пропустил что-то или это действительно единственный способ заставить это работать?
Вы используете плагин m2eclipse? Вы используете maven build для генерации войны? –
В настоящее время я не использую Maven для создания войны. Это одна из вещей, которые я хотел бы сделать в будущем. До тех пор я строю войну с Eclipse и ее функцию экспорта. –
В конфигурации пути сборки A попробуйте установить B как «экспортированный» – miniBill