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]

Це мій 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>

Я потрапив на це, коли слідую за весняним підручником піцашопу
Роб Грант

Це ваш повний пом.xml? Тому що тоді ваш, швидше за все, не вистачає банки.
Марко Школенберг

Відповіді:


286

Мені потрібно було додати додаткову залежність Maven:

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

3
+1 Для вирішення моєї проблеми. Докладнішу інформацію можна знайти про реструктуризацію весняної бази коду безпеки 3.0 за адресою: blog.springsource.com/2009/06/03/spring-security-300m1-опубліковано
Rydell

Приємне посилання. Я міг би скористатися цим і кілька місяців тому.
Тейлор Ліз

12
Бекон врятував SO ще раз!
Ендрю Лебедь

Подібне рішення має місце при спробі використання лише spring-security-casбанки.
Ryan Ransford

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

18

У мене було те саме повідомлення про помилку при спробі розгортання програми. Навесні конфігурація безпеки 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-security-acl-3.1.0.M2.jar
  • spring-security-config-3.1.0.M2.jar
  • spring-security-core-3.1.0.M2.jar
  • spring-security-taglibs-3.1.0.M2.jar
  • spring-security-web-3.1.0.M2.jar

Ви майже повинні використовувати Maven для того, щоб розпочати весну. І коли ви неохоче робите саме це, воно все одно не працює! Хтось, десь важко сміється ... Ця відповідь допомогла трохи зменшити моє розчарування.
Арне Евертссон

12

Я деякий час боровся з цим, і жодна з цих відповідей не допомогла. Завдяки коментарю користувача64141 я зрозумів, що проблема з spring.handlersфайлами.

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

Сайт Maven висвітлює цю точну проблему та як її вирішити, додавши файли разом:

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



6

Рішення, безумовно, "spring-security-config" не у вашому WEB-INF / lib.

У моєму проекті Eclipse з використанням Maven виявилося, що не всі основні залежності копіюються в WEB-INF / lib. Дивлячись на Project -> Properties -> Deployment Assembly, копіювались лише деякі банки.

Щоб виправити це, я натиснув "Додати", потім "Java Build Path Entires" і нарешті "Maven Dependunities".

Я шукав так і в Інтернеті протягом останньої години, шукаючи це, тому сподіваюся, це допомагає комусь іншому.



3

@James Jithin - такий виняток може з’являтися і тоді, коли у вас є дві різні версії схеми бобів та схеми безпеки в 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 У моєму випадку у мене відсутня банка "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

Якщо у вас вже є всі залежності у вашій пам’яті, спробуйте:
1. Видаліть усі завантажені банки з папки Maven сховища для 'org-> springframework'
2. Складіть Maven clean build.


0

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


0

Я отримав цю помилку під час розгортання до Діви. Рішення полягало в тому, щоб додати це до мого імпорту:

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

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



0

Якщо у мене була така ж проблема кілька хвилин тому, я пропустив бібліотеку "Maven odvisncendies" в моїй Асамблеї розгортання. Я додав це через розділ "Асамблея веб-розгортання" у Eclipse


0

якщо додавання залежностей не вирішило вашу проблему, створіть архів WAR заново. У моєму випадку я використовував застарілий файл WAR без захисних мереж та конфіденційності


0

Додайте таку залежність у свій файл pom.xml, і якщо ви використовуєте IntelliJ, тоді додайте ті самі банки в папку WEB-INF-> lib .... шлях - Структура проекту -> Atrifacts -> Виберіть банку з панелі "Доступні елементи" та подвійно клацніть. Він додасться до відповідної папки

<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.