Проблема пути к классам во время отладки в Eclipse: Как включить выходные данные зависимого проекта в путь к классам во время выполнения веб-проекта? - PullRequest
10 голосов
/ 29 ноября 2008

Итак, я начал с проекта веб-сервисов (просто динамического веб-проекта), который правильно собирает и отлаживает из eclipse. Мы вытащили часть общего кода, который хотим поместить в общую библиотеку, поэтому теперь эти классы входят в отдельный проект jar, на который ссылается веб-проект.

В веб-проекте я сделал Project-> Properties-> Java Build Path-> Projects-> Add и добавил проект jar. И это правильно решило все проблемы пути к классам во время компиляции, и все прекрасно работает. Но во время выполнения, когда сервер Tomcat запускается, Spring пытается внедрить некоторые классы, содержащиеся в файле jar, и я получаю NoClassDefFoundError.

Мои файлы .class и properties, а также содержимое моего каталога META-INF отображаются в каталоге ./build, но мой каталог WEB-INF / lib, похоже, находится на месте, а зависимость jar не ' скопировать его в библиотеку веб-приложений.

Что такое магическое заклинание, чтобы сказать затмению, что другой проект jar должен быть доступен для Tomcat во время выполнения? Из нашего скрипта ant build мы сначала просто встраиваем другой проект в WEB-INF / lib, и все работает отлично, но не для отладки затмения.

Ответы [ 2 ]

10 голосов
/ 26 октября 2011

Я понял это, потратив некоторое время на это. Если вы находитесь в Eclipse Helios, перейдите на properties > deployment assembly > add > project и выберите зависимый проект, который вы хотите добавить.

9 голосов
/ 29 ноября 2008

Зависимости модуля Java EE решат эту проблему. Вы уже выполнили задачу извлечения ваших общих классов в свой собственный проект , возможно , потому что другие проекты зависят от этих классов. В любом случае вам нужно убедиться, что это проект Utility (появляется в Java EE в мастерах проектов), а не просто простой проект Java. После того, как вы это сделаете, вы можете приступить к добавлению проекта Utility в путь сборки (путь времени компиляции), как вы выяснили.

Дополнительный (последний) шаг - установить зависимость модуля Java EE между вашим динамическим веб-проектом и разделяемой библиотекой, в результате чего классы утилиты будут помещены в WEB-INF \ lib во время развертывания и даже во время экспорта WAR. Для этого перейдите в свойства динамического веб-проекта и найдите зависимости модуля Java EE. Убедитесь, что ваш служебный проект выбран здесь. Повторно разверните / опубликуйте свою заявку, и все будет хорошо.

...