Spring 3.0 - 无法找到XML模式命名空间的Spring NamespaceHandler [http://www.springframework.org/schema/security]

时间:2010-01-29 09:43:13

标签: java spring maven-2 spring-security

任何想法可能是什么原因?

  

无法找到Spring   XML模式的NamespaceHandler   命名空间   [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]

这是我的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>

在我的pom.xml中,我有:

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

15 个答案:

答案 0 :(得分:285)

我需要添加一个额外的Maven依赖项:

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

答案 1 :(得分:18)

尝试部署应用程序时,我遇到了同样的错误消息。在Spring中,安全性配置xml可以与applicationContext.xml不同,通常是WEB-INF文件夹中的applicationContext-security.xml。要应用的更改是针对web.xml

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

applicationContext.xml看起来像:

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

即使进行了这些更改,也会存在名称空间错误。要摆脱这种情况,请将以下jar文件添加到WEB-INF / lib,然后添加到库中:

  • 弹簧安全-ACL-3.1.0.M2.jar
  • 弹簧安全-CONFIG-3.1.0.M2.jar
  • 弹簧安全核心3.1.0.M2.jar
  • 弹簧安全标签库-3.1.0.M2.jar
  • 弹簧安全web的3.1.0.M2.jar

答案 2 :(得分:10)

我挣扎了一段时间,这些答案都没有帮助。感谢 user64141 的评论,我意识到spring.handlers文件存在问题。

我正在使用Maven的Shade插件生成一个胖jar,所有spring.handlers(和spring.schemas)文件都被每个Spring依赖项覆盖。

Maven网站涵盖了这个确切的问题以及如何通过将文件一起添加到一起来解决它:

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

答案 3 :(得分:8)

我使用了spring-security-config jar它解决了我的问题

答案 4 :(得分:6)

解决方案绝对不是你的WEB-INF / lib中的“spring-security-config”。

对于我在Eclipse中使用Maven的项目,结果发现并非所有maven依赖项都被复制到WEB-INF / lib。看项目 - &gt;属性 - &gt;部署程序集,只复制了一些罐子。

要解决此问题,我点击“添加”,然后点击“Java Build Path Entires”,最后点击“Maven Dependencies”。

我一直在搜索SO和网络,寻找这个,所以希望这有助于其他人。

答案 5 :(得分:3)

Maven Dependencies的一个很好的列表存在于:Spring Site 所需的主要工件是:

  1. 弹簧安全核
  2. 弹簧安全的Web
  3. 弹簧安全配置

答案 6 :(得分:3)

@James Jithin - 当你在xsi:schemaLocation中有两个不同版本的bean和安全模式时,也会出现这样的异常。在您粘贴的代码段中就是这种情况:

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"

在我的情况下,将它们都改为3.1解决了问题

答案 7 :(得分:1)

我做了什么:

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

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

完美地运作。更多Baeldung

答案 8 :(得分:0)

如果您已经拥有pom中的所有依赖项,请尝试:
1。从'org-&gt; springframework'中删除maven存储库文件夹中所有下载的jar文件
2。做一个maven清洁的构建。

答案 9 :(得分:0)

我今天遇到了类似的问题。出于某种原因IntelliJ IDEA在部署应用程序时未包含Spring Security jar文件。我想我应该同意这里的大部分海报。

答案 10 :(得分:0)

我在部署到处女座时遇到了这个错误。解决方案是将此添加到我的捆绑导入:

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

我注意到在META-INF下的Spring jar中有一个spring.schemas和一个spring.handlers部分,并且必须导入它们指向的类(在本例中为org.springframework.transaction.config.TxNamespaceHandler)

答案 11 :(得分:0)

答案 12 :(得分:0)

几分钟前遇到同样的问题,我在部署程序集中错过了“Maven depencendies”库。 我通过Eclipse中的“Web部署程序集”部分添加了它

答案 13 :(得分:0)

如果添加依赖项没有解决您的问题,请再次创建WAR归档文件。在我的例子中,我使用了过时的WAR文件,没有安全网和安全混淆的罐子

答案 14 :(得分:0)

在pom.xml文件中添加以下依赖项,如果您使用IntelliJ,则将相同的jar添加到WEB-INF-&gt; lib文件夹.... path是Project Structure - &gt; Atrifacts - &gt;从Available Elements窗格中选择jar并双击。它将添加到相应的文件夹

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