Spring 3.0 - Spring NamespaceHandler für XML-Schemanamensraum konnte nicht gefunden werden [http://www.springframework.org/schema/security]


179

Irgendwelche Ideen, was die Ursache dafür sein könnte?

Spring NamespaceHandler für XML-Schemanamensraum konnte nicht gefunden werden [ 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]

Dies ist meine 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>

In meiner pom.xml habe ich:

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

Ich traf dies, als ich dem Spring Pizzashop Tutorial folgte
Rob Grant

Ist das deine komplette pom.xml? Denn dann fehlt dir höchstwahrscheinlich ein Glas.
Marco Schoolenberg

Antworten:


286

Ich musste eine zusätzliche Maven-Abhängigkeit hinzufügen:

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

3
+1 Zur Lösung meines Problems. Weitere Informationen zur Umstrukturierung der Spring Security 3.0-Codebasis finden Sie unter: blog.springsource.com/2009/06/03/spring-security-300m1-released
Rydell

Netter Link. Ich hätte das auch vor ein paar Monaten gebrauchen können.
Taylor Leese

12
Speck von SO noch einmal gerettet!
Andrew Swan

Eine ähnliche Lösung gilt, wenn versucht wird, nur das spring-security-casGlas zu verwenden.
Ryan Ransford

Ich empfehle diesen Link für diejenigen mit Unable to locate Spring NamespaceHandler for XML schema namespace [xxxxx]Problemen. Ich hatte in der Vergangenheit ein ähnliches Problem , und das hat mir sehr geholfen!
Cotta

18

Beim Versuch, die Anwendung bereitzustellen, wurde dieselbe Fehlermeldung angezeigt. In Spring kann sich die Sicherheitskonfigurations-XML von der Datei applicationContext.xml unterscheiden, normalerweise von applicationContext-security.xml im Ordner WEB-INF. Die anzuwendenden Änderungen gelten für web.xml

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

Und die applicationContext.xml würde folgendermaßen aussehen:

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

Auch nachdem Sie diese Änderungen vorgenommen haben, bleibt der Namespace-Fehler bestehen. Um dies zu beseitigen, fügen Sie die folgenden JAR-Dateien zur WEB-INF / lib und dann zur Bibliothek hinzu:

  • 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

Sie müssen Maven so ziemlich benutzen, um den Frühling in Gang zu bringen. Und wenn Sie nur ungern genau das tun, funktioniert es immer noch nicht! Jemand, irgendwo lacht heftig ... Diese Antwort hat mir geholfen, meine Frustration ein wenig zu reduzieren.
Arne Evertsson

12

Ich hatte eine Weile damit zu kämpfen und keine dieser Antworten half. Dank des Kommentars von user64141 wurde mir klar, dass es ein Problem mit den spring.handlersDateien gab.

Ich benutze das Shade-Plugin für Maven, um ein Fettglas zu generieren, und all das spring.handlers(undspring.schemas ) Dateien wurden von jeder Spring-Abhängigkeit überschrieben.

Die Maven-Site behandelt genau dieses Problem und wie es gelöst werden kann, indem stattdessen die Dateien zusammengefügt werden:

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


8

Ich habe spring-security-config jar verwendet, um das Problem für mich zu lösen


6

Die Lösung ist definitiv "spring-security-config", nicht in Ihrer WEB-INF / lib.

Bei meinem Projekt in Eclipse mit Maven stellte sich heraus, dass nicht alle Maven-Abhängigkeiten nach WEB-INF / lib kopiert wurden. Bei Projekt -> Eigenschaften -> Bereitstellungsassembly wurden nur einige der Gläser kopiert.

Um dies zu beheben, klickte ich auf "Hinzufügen", dann auf "Java Build Path Entires" und schließlich auf "Maven Dependencies".

Ich habe SO und das Web die letzte Stunde danach gesucht, also hoffentlich hilft das jemand anderem.


3

Eine schöne Liste der Maven-Abhängigkeiten finden Sie unter: Spring Site Die wichtigsten benötigten Artefakte sind:

  1. Feder-Sicherheitskern
  2. Spring-Security-Web
  3. spring-security-config

3

@James Jithin - Eine solche Ausnahme kann auch auftreten, wenn Sie in xsi zwei verschiedene Versionen von Beans und Sicherheitsschema haben: schemaLocation. Dies ist in dem von Ihnen eingefügten Snippet der Fall:

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"

In meinem Fall löste das Ändern beider auf 3.1 das Problem


Ich habe es gerade geschafft, es zum Laufen zu bringen: http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/security/spring-security-3.2.xsd In meinem Fall fehlte das Glas 'spring-security-config'.
Ithar

Ich stimme diesem Kommentar zu. Hatte mein Problem aufgrund dieser Ursache.
DolphinJava

2

Was ich getan habe:

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

und

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

funktioniert einwandfrei. Mehr Baeldung


0

Wenn Sie bereits alle Abhängigkeiten in Ihrem POM haben, versuchen
Sie Folgendes : 1. Entfernen Sie alle heruntergeladenen Jars aus Ihrem Maven-Repository-Ordner für 'org-> springframework'.
2. Erstellen Sie einen sauberen Build für Maven .


0

Ich bin heute auf das sehr ähnliche Problem gestoßen. Aus irgendeinem Grund IntelliJ IDEAwurden Spring Security-JAR-Dateien während der Bereitstellung der Anwendung nicht berücksichtigt. Ich denke, ich sollte der Mehrheit der Poster hier zustimmen.


0

Ich habe diesen Fehler beim Bereitstellen auf Virgo erhalten. Die Lösung bestand darin, dies zu meinen Bundle-Importen hinzuzufügen:

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

Ich habe festgestellt, dass es in den Spring-Gläsern unter META-INF einen Abschnitt spring.schemas und einen Abschnitt spring.handlers gibt und die Klasse, auf die sie verweisen (in diesem Fall org.springframework.transaction.config.TxNamespaceHandler), importiert werden muss.



0

Hatte vor ein paar Minuten das gleiche Problem, fehlte mir die Bibliothek 'Maven depencendies' in meiner Deployment Assembly. Ich habe es über den Abschnitt 'Web Deployment Assembly' in Eclipse hinzugefügt


0

Wenn das Hinzufügen von Abhängigkeiten Ihr Problem nicht gelöst hat, erstellen Sie das WAR-Archiv erneut. In meinem Fall habe ich eine veraltete WAR-Datei ohne Security-Web- und Security-Conf-Jars verwendet


0

Fügen Sie die folgende Abhängigkeit in Ihre pom.xml-Datei ein. Wenn Sie IntelliJ verwenden, fügen Sie dem Ordner WEB-INF-> lib dieselben Gläser hinzu. Der Pfad lautet Projektstruktur -> Atrifakte -> Wählen Sie im Bereich Verfügbare Elemente die Option jar aus und verdoppeln Sie sie klicken. Es wird dem jeweiligen Ordner hinzugefügt

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-config</artifactId>
    <version>3.0.1.RELEASE</version>
</dependency>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.