Kiran
Kiran

Reputation: 20293

Spring 3.0 -- Unable to locate Spring NamespaceHandler for XML schema namespace context

Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/context]

SEVERE: Exception sending context initialized event to listener instance of
class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem: Unable to locate NamespaceHandler for namespace
[http://www.springframework.org/schema/context]
Offending resource: ServletContext resource [/WEB-INF/HelloWorld-service.xml]

This is my HelloWorld-service.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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
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/util
    http://www.springframework.org/schema/util/spring-util-3.0.xsd"
     default-autowire="byName">

<context:component-scan base-package="com.test.service">
    <context:include-filter type="annotation"
        expression="org.springframework.stereotype.Service"/>
</context:component-scan>   

In my pom.xml I have:

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

Project tree structure:
enter image description here Any ideas what could be the cause of this?

Upvotes: 7

Views: 2282

Answers (3)

Shane Voisard
Shane Voisard

Reputation: 1145

I have had success using the spring BOM ("bill of materials") inside my project's POM:

<dependencyManagement>
    <dependencies>
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-framework-bom</artifactId>
         <version>3.2.6.RELEASE</version>
         <scope>import</scope>
         <type>pom</type>
      </dependency>
    </dependencies>
</dependencyManagement>

But the earliest version of spring-framework-bom in maven central repository is 3.2.6.RELEASE, and you would have to migrate to a different version to use a BOM. The BOM ensures consistent resolution of artifacts by version. This also allows you to remove all the <version>${spring.version}</version> from your dependencies.

And "versionless" xsd references:

xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context.xsd">

Upvotes: 0

Nimesh
Nimesh

Reputation: 802

If you are working with eclipse then try following steps:

Right click on project->properties->Deployment Assembly->Java build path entries-> Maven dependencies

That means add maven dependencies in your deployment assembly

Upvotes: 1

Angelo Immediata
Angelo Immediata

Reputation: 6954

Ususally this happens when I started the WebApp under eclipse; I don't know why, it seems Eclipse can't find spring jars containing the spring XSD schemas Usually I solved it by adding spring jars under WEB-INF/lib directory (by using the same identical name declared in the pom.xml)

Upvotes: 1

Related Questions