Spring 3.0 - Не удается найти Spring пространство имен имен пространства имен для пространства XML-схем [http://www.springframework.org/schema/security]
Какие идеи могут быть причиной этого?
Не удалось найти SpringNamespaceHandler для схемы 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]
Это мое applicationContext.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>
Ответы
Ответ 1
Мне нужно было добавить дополнительную зависимость от Maven:
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>3.0.1.RELEASE</version>
</dependency>
Ответ 2
У меня было такое же сообщение об ошибке при попытке развернуть приложение. В 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, а затем в библиотеку:
- spring -Безопасность-ACL-3.1.0.M2.jar
- spring -Безопасность-конфиг-3.1.0.M2.jar
- spring -Безопасность-ядро-3.1.0.M2.jar
- spring -Безопасность-библиотека теги-3.1.0.M2.jar
- spring -Безопасность-веб-3.1.0.M2.jar
Ответ 3
Я боролся с этим некоторое время, и ни один из этих ответов не помог. Благодаря комментарию от user64141 я понял, что возникла проблема с файлами spring.handlers
.
Я использую плагин Shade для Maven для генерации жира, и все файлы spring.handlers
(и spring.schemas
) перезаписываются каждой зависимостью Spring.
Сайт Maven описывает эту конкретную проблему и как ее решить, добавив вместе файлы:
http://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html#AppendingTransformer
Ответ 4
Я использовал spring -security-config jar, он разрешил проблему для меня
Ответ 5
Решение определенно "spring -security-config" не в вашем WEB-INF/lib.
Для моего проекта в Eclipse с использованием Maven оказалось, что не все зависимости maven копируются в WEB-INF/lib. Если посмотреть на проект → Свойства → сборка развертывания, копируются только некоторые из фляг.
Чтобы исправить это, я нажал "Добавить", затем "Java Build Path Entires" и, наконец, "Maven Dependencies".
Я искал SO и сеть в течение последнего часа, ища это, поэтому, надеюсь, это помогает кому-то другому.
Ответ 6
Хороший список зависимостей Maven существует: Spring Сайт
Основные артефакты:
- spring -Безопасность-ядро
- spring -Безопасность-веб
- spring -Безопасность-конфигурации
Ответ 7
@James Jithin - такое исключение может появиться и при наличии двух разных версий beans и схемы безопасности в 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 решало проблему
Ответ 8
Если у вас уже есть все зависимости в вашем pom, попробуйте:
1. Удалите все загруженные баночки из своей папки репозитория maven для 'org- > springframework'
2. Создайте чистую сборку maven.
Ответ 9
Сегодня я столкнулся с такой же проблемой. По какой-то причине IntelliJ IDEA
не включили Spring файлы jar безопасности во время развертывания приложения. Думаю, я согласен с большинством плакатов здесь.
Ответ 10
Я получил эту ошибку при развертывании в Дева. Решение заключалось в том, чтобы добавить это в мои пакеты:
org.springframework.transaction.config;version="[3.1,3.2)",
Я заметил, что в банках Spring в META-INF есть раздел spring.schemas и spring.handlers и класс, на который они указывают (в этом случае org.springframework.transaction.config.TxNamespaceHandler) необходимо импортировать.
Ответ 11
Я нашел это решение:
http://www.javacreed.com/unable-to-locate-spring-namespacehandler-for-xml-schema-namespace-httpwww-springframework-orgschemamvc/
Включите эту банку в свой проект
Ответ 12
Имел ту же самую проблему несколько минут назад, мне не хватало библиотеку "Maven depencendies" в моей сборке развертывания.
Я добавил его через раздел "Web Deployment Assembly" в Eclipse
Ответ 13
Если добавление зависимостей не решит вашу проблему, снова создайте архив WAR. В моем случае я использовал устаревший файл WAR без безопасности-web и security-conf jars
Ответ 14
Что я сделал:
<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
Ответ 15
Добавьте в файл pom.xml следующую зависимость и, если вы используете IntelliJ, добавьте те же банки в папку WEB-INF- > lib.... path - Структура проекта → Atrifacts → Выберите jar из доступных элементов панель и двойной щелчок. Он добавит в соответствующую папку
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>3.0.1.RELEASE</version>
</dependency>