Eclipse debug-time classpath problem: как вы включаете зависимый вывод проекта в путь к классу времени выполнения веб-проекта?

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

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

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

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

Ответ 1

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

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

Ответ 2

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