Вот проблема, с которой я застрял уже несколько часов, и сейчас я чувствую себя довольно отчаянно.
Я перенес наше приложение из Spring 2.5 / Hiberante 3.3 в Spring 3.0.5 / Hibernate 3.6. Было сделано следующее:
- обновлены зависимости / версия Spring (теперь есть не только несколько зависимостей)
- обновлены зависимости Hibernate / версия
- обновлены XML-файлы контекста Spring в терминах версий для "schemaLocation"
Ошибка, возникающая при запуске из Eclipse IDE после различных незначительных исправлений и изменений, выглядит следующим образом:
Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/tx]
Я просмотрел другие потоки и понял, что такая проблема возникает, когда конкретная библиотека (в данном случае spring-tx) не найдена в classpath, но я ясно вижу ее в моих зависимостях Maven.
Следующее, что я сделал, я построил WAR , как я делал это для предыдущих версий, развернул его на Tomcat, и приложение работало отлично !
По этому я могу сделать вывод, что чего-то не хватает в конфигурации среды Eclipse. Что интересно, все жалобы касаются Spring-TX, - когда я удалил одну строку, используя пространство имен TX
<tx:annotation-driven transaction-manager="transactionManager" />
.. приложение запустилось нормально без жалоб на другие пространства имен (конечно, оно не работало нормально, но, по крайней мере, не было никаких жалоб во время инициализации).
Краткое описание моей IDE / настройки проекта:
- запуск приложения с помощью файла GWT .launch (GWT ver 2.0.3)
- в этом файле запуска есть ссылки на другие проекты, в том числе на стороне сервера с пружинными зависимостями
- на самом деле этот проект gwt-client имеет POM на стороне сервера в качестве родителя, и в результате я вижу все зависимости Spring в зависимостях Maven этого проекта
- В проекте GWT-клиента есть /war/WEB-INF/applicationContext.xml, который импортирует другие контекстные XML-ресурсы, которые фактически используют spring-tx
Формальным вопросом будет: каковы возможные причины, по которым запуск проекта из IDE приводит к таким ошибкам после перехода на Spring 3x (и работает нормально при развертывании как встроенной WAR)?
Я не ожидаю прямых ответов (если у кого-то не было точно такой же среды и проблемы), но советы, советы будут очень полезны!
EDIT
Забыл упомянуть, что во время запуска приложения из IDE у меня появляется куча предупреждений, подобных этим:
[WARN] Server class 'javax.persistence.EntityManagerFactory' could not be found in the web app, but was found on the system classpath
[WARN] Adding classpath entry 'file:/D:/maven/repository/org/hibernate/javax/persistence/hibernate-jpa-2.0-api/1.0.0.Final/hibernate-jpa-2.0-api-1.0.0.Final.jar' to the web app classpath for this session
[WARN] Server class 'org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor' could not be found in the web app, but was found on the system classpath
[WARN] Adding classpath entry 'file:/D:/maven/repository/org/springframework/spring-orm/3.0.5.RELEASE/spring-orm-3.0.5.RELEASE.jar' to the web app classpath for this session
.. так, может быть, spring-tx также не найден в веб-приложении (и обнаружен в системном пути к классам), но он не добавлен, как это случилось с другими? Что может быть причиной такого поведения?