Spring 3.0 - Impossible de localiser Spring NamespaceHandler pour l'espace de noms de schéma XML [http://www.springframework.org/schema/security]


181

Des idées sur ce qui pourrait en être la cause?

Impossible de localiser Spring NamespaceHandler pour l'espace de noms de schéma 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]

C'est mon 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>

Dans mon pom.xml, j'ai:

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

Je l'ai frappé en suivant le tutoriel Spring pizzashop
Rob Grant

Est-ce votre pom.xml complet? Parce qu'alors il vous manque probablement un pot.
Marco Schoolenberg

Réponses:


287

J'avais besoin d'ajouter une dépendance Maven supplémentaire:

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

3
+1 Pour résoudre mon problème. Plus d'informations peuvent être trouvées sur la restructuration de la base de code Spring Security 3.0 à: blog.springsource.com/2009/06/03/spring-security-300m1-released
Rydell

Beau lien. J'aurais pu aussi l'utiliser il y a quelques mois.
Taylor Leese

12
Bacon sauvé encore une fois par SO!
Andrew Swan

Une solution similaire est valable lorsque vous essayez d'utiliser uniquement le spring-security-caspot.
Ryan Ransford

Je recommande ce lien pour ceux qui ont des Unable to locate Spring NamespaceHandler for XML schema namespace [xxxxx]problèmes. J'ai eu un problème similaire dans le passé, et cela m'a beaucoup aidé!
Cotta

18

J'ai eu le même message d'erreur en essayant de déployer l'application. Au printemps, la configuration de sécurité xml peut être différente de applicationContext.xml, généralement applicationContext-security.xml dans le dossier WEB-INF. Les modifications à appliquer concernent web.xml

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

Et l'applicationContext.xml ressemblerait à ceci:

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

Même après avoir apporté ces modifications, l'erreur d'espace de noms existera. Pour vous en débarrasser, ajoutez les fichiers jar suivants au WEB-INF / lib puis à la bibliothèque:

  • 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

Vous devez pratiquement utiliser Maven pour lancer Spring. Et quand vous faites cela à contrecœur, cela ne fonctionne toujours pas! Quelqu'un, quelque part, rit fort ... Cette réponse m'a aidé à réduire un peu ma frustration.
Arne Evertsson

12

J'ai lutté avec cela pendant un certain temps et aucune de ces réponses n'a aidé. Grâce au commentaire de user64141, j'ai réalisé qu'il y avait un problème avec les spring.handlersfichiers.

J'utilise le plugin Shade pour Maven pour générer un gros pot, et tous les fichiers spring.handlers(et spring.schemas) étaient écrasés par chaque dépendance Spring.

Le site Maven couvre exactement ce problème et comment le résoudre en ajoutant les fichiers ensemble à la place:

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


8

J'ai utilisé le pot spring-security-config, cela a résolu le problème pour moi


6

La solution est définitivement "spring-security-config" pas dans votre WEB-INF / lib.

Pour mon projet dans Eclipse utilisant Maven, il s'est avéré que toutes les dépendances de maven n'étaient pas copiées dans WEB-INF / lib. En regardant Project -> Properties -> Deployment Assembly, seuls certains des fichiers JAR étaient copiés.

Pour résoudre ce problème, j'ai cliqué sur "Ajouter", puis sur "Java Build Path Entires" et enfin "Maven Dependencies".

Cela fait une heure que je cherche SO et le Web à la recherche de cela, alors j'espère que cela aidera quelqu'un d'autre.


3

Une belle liste de dépendances Maven existe sur: Spring Site Les principaux artefacts nécessaires sont:

  1. spring-security-core
  2. Spring-security-web
  3. spring-security-config

3

@James Jithin - une telle exception peut également apparaître lorsque vous avez deux versions différentes de beans et de schéma de sécurité dans xsi: schemaLocation. C'est le cas dans l'extrait que vous avez collé:

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"

Dans mon cas, les changer tous les deux en 3.1 a résolu le problème


J'ai juste réussi à le faire fonctionner: http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/security/spring-security-3.2.xsd dans mon cas, il me manquait le pot 'spring-security-config'.
Ithar

Je suis d'accord avec ce commentaire. J'ai eu mon problème à cause de cette cause.
DolphinJava

2

Ce que j'ai fait:

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

et

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

fonctionne parfaitement. Plus Baeldung


0

Si vous avez déjà toutes les dépendances dans votre pom, essayez:
1. Supprimez tous les fichiers jars téléchargés de votre dossier maven repository pour 'org-> springframework'
2. Faites une compilation propre maven.


0

J'ai rencontré le problème très similaire aujourd'hui. Pour une raison quelconque, IntelliJ IDEAje n'ai pas inclus les fichiers jar Spring Security lors du déploiement de l'application. Je pense que je devrais être d'accord avec la majorité des affiches ici.


0

J'ai eu cette erreur lors du déploiement sur Virgo. La solution était d'ajouter ceci à mes importations groupées:

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

J'ai remarqué dans les bocaux Spring sous META-INF qu'il y avait une section spring.schemas et une section spring.handlers, et la classe vers laquelle ils pointent (dans ce cas org.springframework.transaction.config.TxNamespaceHandler) doit être importée.



0

J'ai eu le même problème il y a quelques minutes, il me manquait la bibliothèque «Dépendances Maven» dans mon Assemblée de déploiement. Je l'ai ajouté via la section 'Web Deployment Assembly' dans Eclipse


0

si l'ajout de dépendances n'a pas résolu votre problème, créez à nouveau l'archive WAR. Dans mon cas, j'ai utilisé un fichier WAR obsolète sans jars security-web et security-conf


0

Ajoutez la dépendance suivante dans votre fichier pom.xml et si vous utilisez IntelliJ, ajoutez les mêmes jars au dossier WEB-INF-> lib .... le chemin est Structure du projet -> Atrifacts -> Sélectionnez le jar dans le volet Éléments disponibles et double Cliquez sur. Il s'ajoutera au dossier respectif

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-config</artifactId>
    <version>3.0.1.RELEASE</version>
</dependency>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.