Spring 3.0 - Nie można znaleźć Spring NamespaceHandler dla przestrzeni nazw schematu XML [http://www.springframework.org/schema/security]

179

Wszelkie pomysły, co może być tego przyczyną?

Nie można zlokalizować Spring NamespaceHandler dla przestrzeni nazw schematu 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]

To jest moja aplikacjaContext.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>

W moim pom.xml mam:

<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>
Taylor Leese
źródło
Uderzyłem to, wykonując wiosenny samouczek pizzashop
Rob Grant
Czy to Twój kompletny plik pom.xml? Ponieważ wtedy najprawdopodobniej brakuje Ci słoika.
Marco Schoolenberg,

Odpowiedzi:

286

Musiałem dodać dodatkową zależność od Maven:

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>3.0.1.RELEASE</version>
    </dependency>
Taylor Leese
źródło
3
+1 Za rozwiązanie mojego problemu. Więcej informacji można znaleźć na temat restrukturyzacji bazy kodu Spring Security 3.0 pod adresem: blog.springsource.com/2009/06/03/spring-security-300m1-released
Rydell
Niezły link. Przydałby mi się również kilka miesięcy temu.
Taylor Leese
12
Bekon jeszcze raz uratowany przez SO!
Andrew Swan
Podobne rozwiązanie obowiązuje przy próbie użycia tylko spring-security-cassłoika.
Ryan Ransford
Polecam ten link osobom z Unable to locate Spring NamespaceHandler for XML schema namespace [xxxxx]problemami. W przeszłości miałem podobny problem i to bardzo mi pomogło!
Cotta
18

Miałem ten sam komunikat o błędzie podczas próby wdrożenia aplikacji. Wiosną konfiguracja zabezpieczeń xml może być inna niż applicationContext.xml, zwykle applicationContext-security.xml w folderze WEB-INF. Zmiany, które należy zastosować, dotyczą pliku web.xml

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

A applicationContext.xml wyglądałby następująco:

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

Nawet po wprowadzeniu tych zmian będzie występować błąd przestrzeni nazw. Aby się tego pozbyć, dodaj następujące pliki jar do WEB-INF / lib, a następnie do biblioteki:

  • 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
James Jithin
źródło
Prawie musisz użyć Maven, aby uruchomić Spring. A kiedy niechętnie to robisz, nadal nie działa! Ktoś gdzieś się śmieje ... Ta odpowiedź pomogła mi trochę zmniejszyć frustrację.
Arne Evertsson,
12

Zmagałem się z tym przez chwilę i żadna z tych odpowiedzi nie pomogła. Dzięki komentarzowi od użytkownika64141 zdałem sobie sprawę, że wystąpił problem z spring.handlersplikami.

Używam wtyczki Shade dla Maven do generowania grubego słoika, a wszystkie spring.handlers(i spring.schemas) pliki były nadpisywane przez każdą zależność Spring.

Witryna Maven obejmuje dokładnie ten problem i sposób jego rozwiązania poprzez dołączenie plików razem:

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

Patrick Herrera
źródło
8

Użyłem słoika Spring-security-config, który rozwiązał problem

abhiram
źródło
6

Rozwiązaniem jest zdecydowanie „wiosenna konfiguracja zabezpieczeń” nie w twoim WEB-INF / lib.

Dla mojego projektu w Eclipse z wykorzystaniem Maven okazało się, że nie wszystkie zależności maven zostały skopiowane do WEB-INF / lib. Patrząc na projekt -> Właściwości -> Zespół wdrożeniowy, kopiowano tylko niektóre słoiki.

Aby to naprawić, kliknąłem „Dodaj”, następnie „Java Build Path Entires” i wreszcie „Maven Dependencies”.

Szukałem SO i Internetu w ciągu ostatniej godziny, szukając tego, więc mam nadzieję, że to pomaga komuś innemu.

Peter Sankauskas
źródło
3

Ładna lista zależności Maven znajduje się na stronie: Spring Site Najważniejsze potrzebne artefakty to:

  1. sprężynowy rdzeń bezpieczeństwa
  2. Spring-security-web
  3. wiosenna ochrona-konfiguracja
George Papatheodorou
źródło
3

@James Jithin - taki wyjątek może pojawić się także wtedy, gdy masz dwie różne wersje fasoli i schemat bezpieczeństwa w xsi: schemaLocation. Tak jest w przypadku wklejonego fragmentu:

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"

W moim przypadku zmiana ich obu na 3.1 rozwiązała problem

ForestierSimon
źródło
Właśnie udało mi się go uruchomić: w http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/security/spring-security-3.2.xsd moim przypadku brakowało słoika „spring-security-config”.
Ithar
Zgadzam się z tym komentarzem. Miałem problem z tej przyczyny.
DolphinJava,
2

Co ja zrobiłem:

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

i

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

działa idealnie. Więcej Baeldung

Xelian
źródło
0

Jeśli masz już wszystkie zależności w pom, spróbuj:
1. Usuń wszystkie pobrane słoiki z folderu repozytorium maven dla „org-> springframework”
2. Wykonaj czystą kompilację maven.

arviarya
źródło
0

Dzisiaj spotkałem bardzo podobny problem. Z jakiegoś powodu IntelliJ IDEAnie uwzględniono plików jar Spring Security podczas wdrażania aplikacji. Myślę, że powinienem się zgodzić z większością plakatów tutaj.

shapiy
źródło
0

Wystąpił ten błąd podczas wdrażania w Pannie. Rozwiązaniem było dodanie tego do importu moich pakietów:

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

Zauważyłem w słoikach Spring pod META-INF, że istnieje sekcja spring.schemas i spring.handlers, a klasa, na którą wskazują (w tym przypadku org.springframework.transaction.config.TxNamespaceHandler) musi zostać zaimportowana.

użytkownik64141
źródło
0

Miałem ten sam problem kilka minut temu, brakowało mi biblioteki „Maven dependendies” w moim Zgromadzeniu wdrażania. Dodałem go przez sekcję „Web Deployment Assembly” w Eclipse

GreyStar
źródło
0

jeśli dodanie zależności nie rozwiązało problemu, utwórz ponownie archiwum WAR. W moim przypadku użyłem przestarzałego pliku WAR bez słoików security-web i security-conf

David
źródło
0

Dodaj następującą zależność w pliku pom.xml, a jeśli używasz IntelliJ, to dodaj te same słoiki do WEB-INF-> folder lib .... ścieżka to Struktura projektu -> Atrifacts -> Wybierz jar z panelu Dostępne elementy i podwójnie Kliknij. Zostanie dodany do odpowiedniego folderu

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-config</artifactId>
    <version>3.0.1.RELEASE</version>
</dependency>
Sia
źródło