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>
Taylor Leese
quelle
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>
Taylor Leese
quelle
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
James Jithin
quelle
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

Patrick Herrera
quelle
8

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

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

Peter Sankauskas
quelle
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
George Papatheodorou
quelle
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

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

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

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

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

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

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

Zimbo Rodger
quelle
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>
Sia
quelle