it-swarm.com.ru

Tomcat генерирует исключения ClassNotFound для классов в других открытых проектах Eclipse

У меня есть структура проекта Eclipse, которая выглядит примерно так:

Eclipse
    project a
    project b

Все эти проекты являются проектами Maven. Проект B является проектом Eclipse WTP и содержит проект A в качестве зависимости. Я использую плагин m2Eclipse.

Когда я развертываю Проект B в Tomcat (все из Eclipse), он всегда выдает ошибки, говорящие о том, что он не может найти классы из Проекта A. Единственный способ, которым я могу это решить, - это закрыть Проект A в Eclipse и выполнить mvn install, поэтому на этом этапе проект A обрабатывается как любая другая зависимость.

Мне бы не хотелось повторно открывать, а затем закрывать проект А каждый раз, когда я вносил в него изменения (что довольно часто на данном этапе). 

Я попытался добавить проект A в путь сборки проекта B, однако это не помогло. Опять же, это работает, только если я закрою проект в Eclipse, поэтому он рассматривается как обычная зависимость maven. 

К вашему сведению, я использую версию Eclipse от Helios. Проект B - это проект Spring, поэтому, естественно, Tomcat падает, когда импортирует все компоненты и т.д.

У кого-нибудь есть предложения? Большое спасибо.

21
Ben J

Причина, по которой Tomcat не может найти ваши классы, заключается в том, что Tomcat не видит зависимости проекта в Eclipse. Чтобы решить эту проблему, вы можете добавить папку bin проекта a в путь к классам Tomcat приложения, запущенного из проекта b.

5
rsp

Что вам нужно сделать, это:

  1. В Eclipse перейдите в «Окно»> «Показать представление»> «Серверы» и откройте вкладку «Серверы».
  2. В разделе «Серверы» дважды щелкните нужный сервер.
  3. Это действие должно открыть окно под названием Обзор с выбранным вами Сервером в TAB
  4. В этом окне выберите: Открыть конфигурацию запуска и нажмите на ссылку.
  5. В окне «Редактировать конфигурацию» выберите вкладку «Classpath»
  6. В текстовом поле ClassPath выберите строку: Записи пользователя
  7. Теперь нажмите кнопку справа под названием: Добавить проекты
  8. В появившемся окне Выбор проекта выберите внешний проект, который вы хотите, чтобы сервер нашел с помощью щелчка.
  9. Закройте эти окна, нажав «Применить», затем «ОК» в зависимости от того, как вы работаете в стеке
  10. Перезагрузите сервер в окне обзора

Вы должны быть готовы к работе. На самом деле это всего лишь 2-минутное упражнение. Удачи

75
Jalkin

Если вы перейдете в свойства проекта, выберите пункт «Сборка развертывания», нажмите «Добавить ...» и выберите «Проект», вы можете добавить зависимый проект, и проблема должна быть решена.

32
Thomas

Щелкните правой кнопкой мыши веб-проект, который добавлен на сервер-контейнер, и выберите Maven, а затем выберите «Отключить разрешение рабочей области». Тогда ваш проект зависимостей начнет появляться как jar, как и любые другие зависимости. 

Щелкните правой кнопкой мыши на WebProject -> Maven -> Disable Workspace Resolution. 

5
Yuvaraj Loganathan

Вы установили расширение m2Eclipse, которое знает о WTP? Без этого m2e не будет работать правильно для проектов WTP. Видеть это:

https://docs.sonatype.org/display/M2Eclipse/WTP+mini+howto

2
Konstantin Komissarchik

Простой способ :

Run -> Run Configurations... -> Classpath

0
Mehdi LAMRANI