Я столкнулся с этой проблемой несколько раз и только наткнулся на (полу) надежное решение, поэтому подумал, что я отправлю его здесь, если это поможет кому-то другому, или, если я его забуду, а также спросите, есть ли у кого-нибудь представление о том, что является основной причиной и почему мое исправление работает.
Проблема. У меня есть веб-приложение spring 3, которое я хочу использовать в записях Eclipse для запуска на сервере Tomcat 7. С некоторыми проектами это просто работает, но некоторые, похоже, попадают в разбитое состояние, при котором каждый раз, когда сервер запускается, я получаю класс не найден: org.springframework.web.servlet.DispatcherServlet.
После некоторого расследования я выяснил, что зависимости проекта maven не были скопированы в WEB-INF/lib
в ${PROJECT_LOCATION}/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/
Я пробовал много чего, прежде чем, наконец, заметил, что у проекта было предупреждение на панели "Проблемы":
Classpath entry org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER
will not be exported or published. Runtime ClassNotFoundExceptions may result.
Возможно, я должен был заметить это раньше.
В любом случае, выбирая это и выполняя "Быстрое исправление", исправляет проблему, и я могу с радостью запустить мой проект. Быстрое исправление заключается в следующем: "Отметьте связанную исходную запись класса пути как зависимость публикации/экспорта".
Проблема в том, что, хотя это работает, я не знаю, что это значит. После этого я не вижу никаких явных изменений в моей конфигурации проекта. Я бы очень хотел узнать, что представляет собой настоящая проблема, и если я смогу избежать этого снова. Я также хотел бы знать, есть ли что-то, что я мог бы сделать сам (кроме выполнения быстрого исправления), который бы исправил его, потому что я чувствую, что я пробовал почти все остальное.
Спасибо за вашу помощь.