web-dev-qa-db-fra.com

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

Des idées quelle pourrait être la cause de ceci?

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]

Ceci 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>
175
Taylor Leese

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>
285
Taylor Leese

J'ai eu le même message d'erreur en essayant de déployer l'application. Au printemps, le fichier XML de configuration de la sécurité peut être différent de celui 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 nom existera. Pour vous en débarrasser, ajoutez les fichiers JAR suivants au fichier 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
18
James Jithin

J'ai eu du mal avec cela pendant un moment 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 fichiers spring.handlers.

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

Le site Maven couvre ce problème précis et comment le résoudre en ajoutant les fichiers ensemble:

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

11
Patrick Herrera

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

8
abhiram

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

Pour mon projet sous Eclipse avec Maven, il s’est avéré que toutes les dépendances de maven n’étaient pas copiées dans WEB-INF/lib. En regardant Projet -> Propriétés -> Assemblage de déploiement, seuls certains des pots ont été copiés.

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

Je cherche SO et le Web depuis une heure à la recherche de cette information. J'espère donc que cela aidera quelqu'un d'autre.

6
Peter Sankauskas

@ James Jithin - une telle exception peut également apparaître lorsque vous avez deux versions différentes de beans et un 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

3
ForestierSimon

Une belle liste de dépendances Maven existe à l'adresse suivante: Spring Site Les principaux artefacts nécessaires sont:

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

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

1
Xelian
0
Avinash

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

0
Zimbo Rodger

Si j'avais le même problème il y a quelques minutes, il me manquait la bibliothèque "Dépendances des dépendants" dans mon Assemblée de déploiement. Je l'ai ajouté via la section "Web Deployment Assembly" dans Eclipse

0
GreyStar

Ajoutez la dépendance suivante dans votre fichier pom.xml. Si vous utilisez IntelliJ, ajoutez les mêmes fichiers JAR dans le dossier WEB-INF-> lib. Cliquez sur. Il va ajouter au dossier respectif

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

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

0
shapiy

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

0
arviarya

J'ai eu cette erreur lors du déploiement sur Virgo. La solution consistait à ajouter ceci à mes importations de bundles:

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

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

0
user64141