Spring 3.0 - Impossibile trovare Spring NamespaceHandler per lo spazio dei nomi dello schema XML [http://www.springframework.org/schema/security]


179

Qualche idea su quale potrebbe essere la causa di questo?

Impossibile trovare Spring NamespaceHandler per lo spazio dei nomi dello schema 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]

Questa è la mia 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>

Nel mio pom.xml ho:

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

Ho colpito questo quando seguivo il tutorial pizzashop di primavera
Rob Grant

Questo è il tuo pom.xml completo? Perché allora molto probabilmente ti manca un barattolo.
Marco Schoolenberg,

Risposte:


286

Avevo bisogno di aggiungere un'ulteriore dipendenza Maven:

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

3
+1 Per aver risolto il mio problema. Ulteriori informazioni sulla ristrutturazione della base di codici di sicurezza 3.0 di primavera sono disponibili all'indirizzo: blog.springsource.com/2009/06/03/spring-security-300m1-released
Rydell,

Bel link. Avrei potuto usarlo anche qualche mese fa.
Taylor Leese,

12
Bacon salvato da SO ancora una volta!
Andrew Swan,

Una soluzione simile vale quando si tenta di utilizzare solo il spring-security-casvaso.
Ryan Ransford,

Consiglio questo link a chi ha Unable to locate Spring NamespaceHandler for XML schema namespace [xxxxx]problemi. Ho avuto un problema simile in passato e questo mi ha aiutato molto!
Cotta,

18

Ho avuto lo stesso messaggio di errore durante il tentativo di distribuire l'applicazione. In primavera, la configurazione di sicurezza xml può essere diversa da applicationContext.xml, in genere applicationContext-security.xml nella cartella WEB-INF. Le modifiche da applicare sono per web.xml

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

E applicationContext.xml sarebbe simile a:

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

Anche dopo aver apportato queste modifiche, si verificherà l'errore dello spazio dei nomi. Per sbarazzarsi di questo, aggiungere i seguenti file jar a WEB-INF / lib e quindi alla libreria:

  • 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

Devi praticamente usare Maven per far partire Spring. E quando lo fai con riluttanza, non funziona ancora! Qualcuno, da qualche parte, ride forte ... Questa risposta mi ha aiutato a ridurre un po 'la mia frustrazione.
Arne Evertsson,

12

Ho lottato con questo per un po 'e nessuna di queste risposte ha aiutato. Grazie al commento di user64141 mi sono reso conto che c'era un problema con i spring.handlersfile.

Sto usando il plugin Shade per Maven per generare un grosso vaso, e tutti i file spring.handlers(e spring.schemas) venivano sovrascritti da ogni dipendenza Spring.

Il sito Maven copre questo esatto problema e come risolverlo aggiungendo invece i file insieme:

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


8

Ho usato il barattolo Spring-Security-Config che mi ha risolto il problema


6

La soluzione è sicuramente "spring-security-config" non nel tuo WEB-INF / lib.

Per il mio progetto in Eclipse con Maven, è risultato che non tutte le dipendenze di Maven venivano copiate su WEB-INF / lib. Guardando Progetto -> Proprietà -> Assemblaggio di distribuzione, solo alcuni dei vasetti venivano copiati.

Per risolvere questo problema, ho fatto clic su "Aggiungi", quindi su "Java Build Path Entires" e infine su "Maven Dependencies".

Ho cercato SO e il web per l'ultima ora cercando questo, quindi spero che questo aiuti qualcun altro.


3

Un bel elenco di dipendenze Maven esiste su: Spring Site I principali manufatti necessari sono:

  1. primavera-sicurezza-core
  2. Primavera-security-web
  3. spring-security-config

3

@James Jithin - tale eccezione può apparire anche quando si hanno due diverse versioni di bean e schema di sicurezza in xsi: schemaLocation. È il caso dello snippet che hai incollato:

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"

Nel mio caso cambiarli entrambi in 3.1 ha risolto il problema


Sono appena riuscito a farlo funzionare: http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/security/spring-security-3.2.xsd nel mio caso mi mancava il vaso "spring-security-config".
Ithar,

Concordato con questo commento. Ho avuto il mio problema a causa di questa causa.
DolphinJava,

2

Cosa ho fatto:

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

e

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

funziona perfettamente. Più Baeldung


0

Se hai già tutte le dipendenze nel tuo pom, prova:
1. Rimuovi tutti i barattoli scaricati dalla cartella del tuo repository maven per 'org-> springframework'
2. Crea un build pulito maven .


0

Oggi ho riscontrato un problema molto simile. Per qualche motivo IntelliJ IDEAnon sono stati inclusi i file jar di Spring Security durante la distribuzione dell'applicazione. Penso che dovrei essere d'accordo con la maggior parte dei poster qui.


0

Ho ricevuto questo errore durante la distribuzione in Vergine. La soluzione era aggiungere questo alle mie importazioni in bundle:

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

Ho notato che nei barattoli Spring sotto META-INF c'è una sezione spring.schemas e una spring.handlers, e la classe a cui puntano (in questo caso org.springframework.transaction.config.TxNamespaceHandler) deve essere importata.



0

Ho avuto lo stesso problema qualche minuto fa, mi mancava la libreria "Mencen depencendies" nel mio Deployment Assembly. L'ho aggiunto tramite la sezione "Web Deployment Assembly" in Eclipse


0

se l'aggiunta di dipendenze non ha risolto il problema, creare nuovamente l'archivio WAR. Nel mio caso, ho usato file WAR obsoleti senza barattoli di sicurezza-web e security-conf


0

Aggiungi la seguente dipendenza nel tuo file pom.xml e se stai usando IntelliJ quindi aggiungi gli stessi vasetti alla cartella WEB-INF-> lib .... il percorso è Struttura progetto -> Atrifatti -> Seleziona vaso dal riquadro Elementi disponibili e doppio clic. Si aggiungerà alla rispettiva cartella

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-config</artifactId>
    <version>3.0.1.RELEASE</version>
</dependency>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.