ClassNotFoundException DispatcherServlet при запуске Tomcat (зависимости Maven не копируются в wtpwebapps)

Я ' Я сталкивался с этой проблемой несколько раз и только что наткнулся на (полу) надежное решение, поэтому подумал, что опубликую его здесь, если он поможет кому-то другому или если я его забуду, а также спросить, есть ли у кого-нибудь идея, в чем заключается основная причина и почему мое исправление работает.

Проблема - у меня есть веб-приложение Spring 3, которое я хочу использовать с параметром «Запуск на сервере» в Eclipse для запуска на сервере Tomcat 7. В некоторых проектах это просто работает, но некоторые, похоже, попадают в неработоспособное состояние, когда каждый раз при запуске сервера я получаю класс not found: 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.

Возможно, мне следовало заметить это раньше.

В любом случае, выбрав это и выполнив «Быстрое исправление» устраняет проблему, и я могу успешно запустить свой проект. Быстрое исправление: «Отметить связанную запись необработанного пути к классам как зависимость публикации / экспорта».

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

Спасибо за вашу помощь.

25
задан Russell 8 June 2012 в 10:23
поделиться