Spring 3.0 - Невозможно найти Spring NamespaceHandler для пространства имен схемы XML [http://www.springframework.org/schema/security]


179

Есть идеи, что может быть причиной этого?

Невозможно найти Spring NamespaceHandler для пространства имен схемы XML [ http://www.springframework.org/schema/security]

org.springframework.web.context.ContextLoader initWebApplicationContext: Context initialization failed
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: ServletContext resource [/WEB-INF/applicationContext.xml]

Это мое приложениеContext.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/security
        http://www.springframework.org/schema/security/spring-security-3.0.xsd">
...
</beans:beans>

В моем pom.xml у меня есть:

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-core</artifactId>      
    <version>3.0.1.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-openid</artifactId>
    <version>3.0.1.RELEASE</version>
</dependency>

Я попал в это, когда следовал учебнику Spring pizzashop
Роб Грант

Это ваш полный pom.xml? Потому что тогда тебе, скорее всего, не хватает банки.
Марко Шуленберг

Ответы:


286

Мне нужно было добавить дополнительную зависимость Maven:

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>3.0.1.RELEASE</version>
    </dependency>

3
+1 За решение моей проблемы. Дополнительную информацию о реструктуризации кодовой базы Spring
Rydell,

Хорошая ссылка. Я мог бы использовать это и несколько месяцев назад.
Тейлор Лиз

12
Бекон, сохраненный SO еще раз!
Эндрю Свон

Аналогичное решение имеет место при попытке использовать только spring-security-casбанку.
Райан Рэнсфорд

Я рекомендую эту ссылку для тех, у кого Unable to locate Spring NamespaceHandler for XML schema namespace [xxxxx]проблемы. У меня была похожая проблема в прошлом, и это мне очень помогло!
Котта

18

У меня было такое же сообщение об ошибке при попытке развернуть приложение. В Spring конфигурация безопасности xml может отличаться от applicationContext.xml, обычно applicationContext-security.xml в папке WEB-INF. Применяемые изменения относятся к web.xml

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/applicationContext.xml
        /WEB-INF/applicationContext-security.xml
    </param-value>
</context-param>

И applicationContext.xml будет выглядеть так:

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                        http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd">

    <http auto-config='true'>
        <intercept-url pattern="/login.jsp" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
        <intercept-url pattern="/**" access="ROLE_USER" />
        <form-login login-page='login.jsp'/>
    </http>

</beans:beans>

Даже после внесения этих изменений ошибка пространства имен будет существовать. Чтобы избавиться от этого, добавьте следующие файлы jar в WEB-INF / lib, а затем в библиотеку:

  • весна-безопасности ACL-3.1.0.M2.jar
  • весна-безопасности конфиг-3.1.0.M2.jar
  • весна-безопасности ядро-3.1.0.M2.jar
  • весна-безопасность-библиотека теги-3.1.0.M2.jar
  • весна-безопасности веб-3.1.0.M2.jar

Вы должны использовать Maven для запуска Spring. И когда вы неохотно делаете это, это все равно не работает! Кто-то, где-то сильно смеется ... Этот ответ немного уменьшил мое разочарование.
Арне Эвертссон

12

Я боролся с этим некоторое время, и ни один из этих ответов не помог. Благодаря комментарию от user64141 я понял, что есть проблема с spring.handlersфайлами.

Я использую плагин Shade для Maven для создания толстого фляги, и все spring.handlersspring.schemas) файлы перезаписывались каждой зависимостью Spring.

Сайт Maven рассказывает об этой проблеме и о том, как ее решить, добавив вместо этого файлы:

http://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html#AppendingTransformer


8

Я использовал Spring-Security-Config JAR, это решило проблему для меня


6

Решение определенно "spring-security-config", а не в вашем WEB-INF / lib.

Для моего проекта в Eclipse с использованием Maven оказалось, что не все зависимости maven копируются в WEB-INF / lib. Глядя на Project -> Properties -> Deployment Assembly, копировались только некоторые банки.

Чтобы это исправить, я нажал «Добавить», затем «Пути сборки Java» и, наконец, «Зависимости Maven».

Я искал SO и в Интернете в течение последнего часа, ища это, так что, надеюсь, это поможет кому-то еще.


3

Хороший список зависимостей Maven существует по адресу: Spring Site Основные необходимые артефакты:

  1. весна-безопасности-жильный
  2. Весна-безопасности веб
  3. весна-безопасности конфигурации

3

@James Jithin - такое исключение может появиться также, когда у вас есть две разные версии bean-компонентов и схемы безопасности в xsi: schemaLocation. Это случай в вставленном вами фрагменте кода:

xsi:schemaLocation="http://www.springframework.org/schema/beans   
 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
 http://www.springframework.org/schema/security  
 http://www.springframework.org/schema/security/spring-security-3.1.xsd"

В моем случае изменение их обоих до 3.1 решило проблему


Мне только удалось заставить его работать: http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/security/spring-security-3.2.xsd в моем случае отсутствовал jar 'spring-security-config'.
Ithar

Согласился с этим комментарием. Была моя проблема из-за этой причины.
DolphinJava

2

Что я сделал:

      <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-config</artifactId>
            <version>3.2.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
            <version>3.2.5.RELEASE</version>
        </dependency>

и

xsi:schemaLocation="
        http://www.springframework.org/schema/security 
        http://www.springframework.org/schema/security/spring-security-3.2.xsd
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-4.1.xsd">

работает отлично. Больше Baeldung


0

Если у вас уже есть все зависимости в вашем pom, попробуйте:
1. Удалите все загруженные файлы jar из папки репозитория maven для 'org-> springframework'
2. Создайте чистую сборку maven.


0

Я столкнулся с очень похожей проблемой сегодня. По какой-то причине IntelliJ IDEAво время развертывания приложения не включены файлы jar Spring Security. Я думаю, что я должен согласиться с большинством постеров здесь.


0

Я получил эту ошибку при развертывании в Деве. Решением было добавить это в мой пакетный импорт:

org.springframework.transaction.config;version="[3.1,3.2)",

Я заметил, что в банках Spring в META-INF есть раздел spring.schemas и раздел spring.handlers, и класс, на который они указывают (в данном случае org.springframework.transaction.config.TxNamespaceHandler), должен быть импортирован.



0

У меня была такая же проблема несколько минут назад, мне не хватало библиотеки «Maven зависимостей» в моей сборке развертывания. Я добавил его через раздел «Сборка веб-развертывания» в Eclipse.


0

если добавление зависимостей не решило вашу проблему, создайте WAR-архив заново. В моем случае я использовал устаревший файл WAR без jar-файлов security-web и security-conf


0

Добавьте следующую зависимость в ваш файл pom.xml и, если вы используете IntelliJ, добавьте те же файлы jar в папку WEB-INF-> lib .... путь - Структура проекта -> Атрибуты -> Выбрать jar на панели Доступные элементы и дважды нажмите кнопку. Это добавит в соответствующую папку

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-config</artifactId>
    <version>3.0.1.RELEASE</version>
</dependency>
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.