Spring,组件扫描导致NamespaceHandler周围的FatalBeanException

时间:2014-02-17 12:12:53

标签: java spring component-scan

当我使用组件扫描时,我得到了以下例外:

Caused By: org.springframework.beans.FatalBeanException: Class [org.springframework.context.config.ContextNamespaceHandler] 
for namespace [http://www.springframework.org/schema/context] 
does not implement the [org.springframework.beans.factory.xml.NamespaceHandler] interface
    at org.springframework.beans.factory.xml.DefaultNamespaceHandlerResolver.resolve(DefaultNamespaceHandlerResolver.java:126)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1433)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1428)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:195)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:139)

这是XML配置。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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.2.xsd
   http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">

<bean id="version" class="java.lang.String">
    <constructor-arg value="${project.version}"/>
</bean>

<context:component-scan base-package="base"/>

当我删除component-scan evertying时,解析得很好,但显然这不是解决方案。什么是问题?

我已经阅读了很多关于旧版本的Spring在类路径上的内容,但我可以验证情况并非如此。

以下是我对$ {spring.version}为3.2.5-RELEASE。

的依赖
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
            <scope>test</scope>
        </dependency>

2 个答案:

答案 0 :(得分:1)

我遇到了类似的错误,但是正在加载的xml上下文文件有一个对spring-webmvc的命名空间引用。我忘了将mvc依赖项添加到我的pom文件中。

答案 1 :(得分:0)

如果罐子已经放在耳朵的WEB-INF/lib中,这也可能是由于在薄战META-INF/lib中意外地包括了弹簧兵。

如果使用maven,这很常见。