ClassNotFoundException при запуске проекта Spring + Maven2 на Tomcat 6 из Eclipse 3.5
При попытке запустить веб-проект из Eclipse я получаю:
SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3877)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:583)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Проект начал сбой при переключении на Fedora 12 x64. Проект работал с WinXP с той же конфигурацией.
В результате поиска я нашел сообщения, утверждающие, что переход к Project Properties → Зависимости модуля Java EE и проверка поля Maven Dependencies устраняет проблему. К сожалению, это не сработало для меня.
Я использую Spring 2.5.6, Maven2, Eclipse 3.5 (с плагином m2e 0.10.0), Tomcat 6 и Java 6, работающие на Fedora 12 x64.
Кто-нибудь видел эту проблему?
В случае, если это помогает, это мой файл .classpath
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java"/>
<classpathentry kind="src" output="target/classes" path="target/generated-sources/gpb"/>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.iam.jdt.core.mavenClasspathContainer">
<attributes>
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
Обновление: У меня нет проблем с созданием или запуском проекта вне Eclipse.
Ответы
Ответ 1
У вас, похоже, есть Eclipse IAM и M2Eclipse в вашем .classpath
. Я бы сделал некоторую очистку:
- Используйте только один из этих плагинов (я предлагаю использовать M2Eclipse).
- Удалите проект из рабочей области Eclipse, удалите
.classpath
и .project
и снова импортируйте проект как проект Maven.
Обновление: Чтобы получить поддержку WTP с помощью M2Eclipse, вам необходимо установить Интеграцию Maven для WTP с сайта обновлений m2eclipse Extras: http://download.eclipse.org/m2e-wtp/releases/, как показано ниже:
![enter image description here]()
Ответ 2
У меня был тот же симптом с другой причиной. Мне пришлось отредактировать файл .classpath. Запись maven:
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
... отсутствовал атрибут, показанный здесь. Когда я добавил тег атрибутов, проблема исчезла. Мне очень любопытно, как настроить это в eclipse ui.
Ответ 3
Обратите внимание, что шаги по установке интеграции WTP изменились.
Смотрите: Проекты Maven/Tomcat в Eclipse Indigo/3.7
Ответ 4
Время от времени сталкивайтесь с той же проблемой.
По какой-то странной причине эта проблема может быть устранена таким образом
1) Щелкните правой кнопкой мыши по проекту Maven → Disable Maven Dependencies
2) Щелкните правой кнопкой мыши по проекту Maven → Enable Maven Dependencies