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

Patrick Herrera
la source
8

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

abhiram
la source
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.

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

ForestierSimon
la source
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

Xelian
la source
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.

arviarya
la source
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.

forme
la source
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.

user64141
la source
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

GreyStar
la source
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

David
la source
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>
Sia
la source