Spring 3.0 - Não foi possível localizar o Spring NamespaceHandler para o namespace do esquema XML [http://www.springframework.org/schema/security]

179

Alguma idéia do que poderia ser a causa disso?

Não foi possível localizar o namespace Spring NamespaceHandler para o esquema 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]

Este é o meu 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>

No meu pom.xml, tenho:

<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
fonte
Eu acertei isso ao seguir o tutorial do pizzashop da Primavera
Rob Grant
Este é o seu pom.xml completo? Porque então você provavelmente está perdendo uma jarra.
Marco Schoolenberg 10/05

Respostas:

286

Eu precisava adicionar uma dependência adicional do Maven:

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>3.0.1.RELEASE</version>
    </dependency>
Taylor Leese
fonte
3
+1 por resolver meu problema. Mais informações podem ser encontradas na reestruturação da mola de segurança 3.0 base de código em: blog.springsource.com/2009/06/03/spring-security-300m1-released
Rydell
Belo link. Eu poderia ter usado isso alguns meses atrás também.
Taylor Leese
12
Bacon salvo por SO mais uma vez!
Andrew Swan
Solução semelhante é válida ao tentar usar apenas o spring-security-casfrasco.
precisa saber é o seguinte
Eu recomendo este link para aqueles com Unable to locate Spring NamespaceHandler for XML schema namespace [xxxxx]problemas. Eu tive um problema semelhante no passado e isso me ajudou muito!
Cotta 17/05
18

Eu tive a mesma mensagem de erro ao tentar implantar o aplicativo. No Spring, o xml da configuração de segurança pode ser diferente do applicationContext.xml, geralmente applicationContext-security.xml na pasta WEB-INF. As alterações a serem aplicadas são para 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 o applicationContext.xml teria a seguinte aparência:

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

Mesmo depois de fazer essas alterações, o erro de espaço para nome existirá. Para se livrar disso, adicione os seguintes arquivos jar ao WEB-INF / lib e, em seguida, à biblioteca:

  • 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
fonte
Você praticamente precisa usar o Maven para fazer o Spring funcionar. E quando você relutantemente faz exatamente isso, ainda não funciona! Alguém, em algum lugar, está rindo muito ... Essa resposta ajudou a reduzir um pouco minha frustração.
Arne Evertsson
12

Eu lutei com isso por um tempo e nenhuma dessas respostas ajudou. Graças ao comentário do usuário64141 , percebi que havia um problema com os spring.handlersarquivos.

Estou usando o plugin Shade do Maven para gerar um jar de gordura, e todos os arquivos spring.handlers(e spring.schemas) estavam sendo substituídos por cada dependência do Spring.

O site do Maven cobre esse problema exato e como resolvê-lo anexando os arquivos:

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

Patrick Herrera
fonte
8

Eu usei o jar spring-security-config que resolveu o problema para mim

abhiram
fonte
6

A solução é definitivamente "spring-security-config" que não está no seu WEB-INF / lib.

Para o meu projeto no Eclipse usando o Maven, nem todas as dependências do maven estavam sendo copiadas para o WEB-INF / lib. Olhando Projeto -> Propriedades -> Conjunto de Implantação, apenas alguns dos frascos estavam sendo copiados.

Para corrigir isso, cliquei em "Adicionar", depois em "Java Build Path Entires" e, finalmente, em "Maven Dependencies".

Estive pesquisando SO e a web durante a última hora procurando por isso, espero que isso ajude outra pessoa.

Peter Sankauskas
fonte
3

Existe uma boa lista de Dependências do Maven em: Site da Primavera Os principais artefatos necessários são:

  1. spring-security-core
  2. Spring-security-web
  3. spring-security-config
George Papatheodorou
fonte
3

@ James Jithin - essa exceção pode aparecer também quando você tem duas versões diferentes de beans e esquema de segurança no xsi: schemaLocation. É o caso do snippet que você colou:

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"

No meu caso, mudar os dois para 3.1 resolveu o problema

ForestierSimon
fonte
Acabei de conseguir fazê-lo funcionar: http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/security/spring-security-3.2.xsd no meu caso, estava faltando o jar 'spring-security-config'.
Ithar
Concordou com este comentário. Tive o meu problema devido a essa causa.
DolphinJava
2

O que eu fiz:

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

funciona perfeitamente. Mais Baeldung

Xelian
fonte
0

Se você já possui todas as dependências do seu pom, tente:
1. Remova todos os frascos baixados da pasta do repositório do maven para 'org-> springframework'
2. Faça uma compilação limpa do maven.

arviarya
fonte
0

Eu encontrei o problema muito semelhante hoje. Por alguma razão IntelliJ IDEA, não incluímos os arquivos jar do Spring Security durante a implantação do aplicativo. Acho que devo concordar com a maioria dos pôsteres aqui.

shapiy
fonte
0

Eu recebi esse erro ao implantar no Virgo. A solução foi adicionar isso às minhas importações de pacote configurável:

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

Notei que nos jars do Spring, no META-INF, há uma seção spring.schemas e spring.handlers, e a classe para a qual eles apontam (nesse caso, org.springframework.transaction.config.TxNamespaceHandler) deve ser importada.

user64141
fonte
0

Tive o mesmo problema há alguns minutos, estava faltando a biblioteca 'Maven depencendies' em meu Deployment Assembly. Eu o adicionei na seção 'Conjunto de implantação da Web' no Eclipse

GreyStar
fonte
0

se a adição de dependências não resolveu seu problema, crie o arquivo WAR novamente. No meu caso, usei arquivo WAR obsoleto sem jars security-web e security-conf

David
fonte
0

Adicione a seguinte dependência ao seu arquivo pom.xml e, se você estiver usando o IntelliJ, adicione os mesmos jars à pasta WEB-INF-> lib .... o caminho é Estrutura do projeto -> Atrifacts -> Selecionar jar no painel Elementos disponíveis e duplo clique. Ele será adicionado à pasta respectiva

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