Рубрики
Без рубрики

Не удалось найти Spring NamespaceHandler для пространства имен XML-схемы

Решение проблемы – Невозможно найти Spring NamespaceHandler для пространства имен XML-схемы – для всех пространств имен.

Автор оригинала: Eugen Paraschiv.

1. Проблема

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

Дальнейшее чтение:

Инъекция на основе XML весной

web.xml vs Инициализатор с пружиной

Лучшие вопросы для интервью Spring Framework

2. http://www.springframework.org/schema/security

Отсутствие пространства имен security на сегодняшний день является наиболее распространенной проблемой на практике:




Что приводит к следующему исключению:

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: 
Configuration problem: 
Unable to locate Spring NamespaceHandler for XML schema namespace 
[http://www.springframework.org/schema/security]
Offending resource: class path resource [securityConfig.xml]

Решение простое – зависимость spring-security-config отсутствует в пути к классам проекта:

 
   org.springframework.security
   spring-security-config
   3.2.5.RELEASE

Это приведет к тому, что правильный обработчик пространства имен – в данном случае SecurityNamespaceHandler – будет помещен в путь к классу и готов к анализу элементов в пространстве имен security .

Полную конфигурацию Maven для полной настройки безопасности Spring можно найти в моем предыдущем руководстве по Maven .

3. http://www.springframework.org/schema/aop

Та же проблема возникает при использовании пространства имен aop без наличия необходимой библиотеки aop spring в пути к классу:



Точное исключение:

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: 
Configuration problem: 
Unable to locate Spring NamespaceHandler for XML schema namespace 
[http://www.springframework.org/schema/aop]
Offending resource: ServletContext resource [/WEB-INF/webConfig.xml]

Решение аналогично – spring-aop jar должен быть добавлен в путь к классу проекта:


   org.springframework
   spring-aop
   4.1.0.RELEASE

В этом случае AopNamespaceHandler будет присутствовать в пути к классу после добавления новой зависимости.

4. http://www.springframework.org/schema/tx

Использование пространства имен транзакций – небольшое, но очень полезное пространство имен для настройки транзакционной семантики:



также приведет к исключению, если правильный jar не находится в пути к классу:

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: 
Configuration problem: 
Unable to locate Spring NamespaceHandler for XML schema namespace
[http://www.springframework.org/schema/tx]
Offending resource: class path resource [daoConfig.xml]

Отсутствующая зависимость здесь spring-tx :


    org.springframework
    spring-tx
    4.1.0.RELEASE

Теперь правый NamspaceHandler – а именно TxNamespaceHandler – будет присутствовать в пути к классу, позволяя декларативное управление транзакциями как с XML, так и с аннотациями.

5. http://www.springframework.org/schema/mvc

Переход к пространству имен mvc :



Отсутствующая зависимость приведет к следующему исключению:

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: 
Configuration problem: 
Unable to locate Spring NamespaceHandler for XML schema namespace
[http://www.springframework.org/schema/mvc]
Offending resource: class path resource [webConfig.xml]

В этом случае отсутствует зависимость spring-mvc :


    org.springframework
    spring-webmvc
    4.1.0.RELEASE

Добавление этого в pom.xml добавит MvcNamespaceHandler в путь к классу, позволяя проекту настраивать семантику MVC с использованием пространства имен.

6. Заключение

Наконец, если вы используете Eclipse для управления веб – сервером и развертывания – убедитесь, что раздел сборки развертывания проекта правильно настроен , а именно, что зависимости Maven действительно включены в путь к классам во время развертывания.

В этом учебном пособии обсуждались обычные подозреваемые в проблеме “Невозможно найти Spring NamespaceHandler для пространства имен XML-схемы” и предлагались решения для каждого случая.