7 votes

Impossible de localiser Spring NamespaceHandler pour l'espace de noms du schéma XML [http://www.springframework.org/schema/data/jpa]

Une idée de ce qui pourrait causer cette erreur ?

org.springframework.beans.factory.parsing.BeanDefinitionParsingException : Problème de configuration : Impossible de localiser le Spring NamespaceHandler pour le l'espace de noms du schéma XML [http://www.springframework.org/schema/data/jpa] Ressource incriminée : Ressource ServletContext [/WEB-INF/spring/appServlet/servlet-context.xml]

Voici mon 'servle-context.xml' (il y a quelques problèmes avec les indentations, mais le fichier est trop gros...) :

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xsi:schemaLocation="http://www.springframework.org/schema/mvc 
                    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
                    http://www.springframework.org/schema/beans 
                    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                    http://www.springframework.org/schema/tx 
                    http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
                    http://www.springframework.org/schema/data/jpa 
                    http://www.springframework.org/schema/data/jpa/spring-jpa.xsd
                    http://www.springframework.org/schema/context 
                    http://www.springframework.org/schema/context/spring-context-3.0.xsd">

<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->

<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven />

<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/resources/**" location="/resources/" />

<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <beans:property name="prefix" value="/WEB-INF/views/" />
    <beans:property name="suffix" value=".jsp" />
</beans:bean>

<context:component-scan base-package="com.epam.mvc3.model" />
<context:component-scan base-package="com.epam.mvc3.controller" />

<!-- JPA -->
<beans:bean
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <beans:property name="location">
        <beans:value>resources/database.properties</beans:value>
    </beans:property>
</beans:bean>

<beans:bean id="myDataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <beans:property name="driverClassName">
        <beans:value>${jdbc.driverClassName}</beans:value>
    </beans:property>
    <beans:property name="url">
        <beans:value>${jdbc.url}</beans:value>
    </beans:property>
    <beans:property name="username">
        <beans:value>${jdbc.username}</beans:value>
    </beans:property>
    <beans:property name="password">
        <beans:value>${jdbc.password}</beans:value>
    </beans:property>
</beans:bean>

<beans:bean id="myEmf"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <beans:property name="dataSource" ref="myDataSource" />

    <beans:property name="persistenceUnitName" value="application" />
    <beans:property name="persistenceXmlLocation"
        value="classpath*:META-INF/persistence.xml" />
    <beans:property name="jpaVendorAdapter" ref="hibernateVendor" />

    <beans:property name="loadTimeWeaver">
        <beans:bean
            class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"></beans:bean>
    </beans:property>
</beans:bean>

<beans:bean id="hibernateVendor"
    class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
</beans:bean>

<beans:bean id="transactionManager"
    class="org.springframework.orm.jpa.JpaTransactionManager">
    <beans:property name="entityManagerFactory" ref="myEmf"></beans:property>
</beans:bean>

<tx:annotation-driven transaction-manager="transactionManager" />

<!-- Spring Data configuration -->
<jpa:repositories base-package="com.epam.mvc3.repository"/>

</beans:beans>

Comme vous pouvez le voir, j'ai spécifié le chemin vers le jpa-schema. Et je ne sais pas quel est le problème

2voto

Alex Bretet Points 329

Assurez-vous que vous avez spring-data-jpa dans vos dépendances.

Si vous utilisez maven :

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
    <version>1.7.0.RELEASE</version>
</dependency>

1voto

nrkkalyan Points 43

J'ai corrigé cela en résolvant l'absence de la dépendance spring-tx dans notre projet.

org.springframework:spring-tx

0voto

user3264641 Points 71

Je sais que cela semble stupide, mais si vous utilisez IDEA et Maven, vous devez vérifier que vous avez coché la case Utiliser le registre des plugins afin que le serveur ait également accès à vos fichiers jar.

Je posterais bien une capture d'écran mais je suis nouveau ici et je n'ai pas assez de points de réputation. Cela fonctionne cependant et j'ai vérifié auprès de l'équipe de support d'IntelliJ.

0voto

Victor Viola Points 481

Après avoir été confronté à ce même problème pendant une semaine, j'ai trouvé une solution. Si vous utilisez Spring MVC + JPA + Maven, utilisez le fichier dispatcher-servlet.xml suivant

<?xml version="1.0" encoding="windows-1252"?>
<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:mvc="http://www.springframework.org/schema/mvc"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       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
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!-- Use @Component annotations for bean definitions -->
    <context:component-scan base-package="PACKAGE WHERE YOU CAN FIND YOUR SOURCE CODE"/>

    <!-- Use @Controller annotations for MVC controller definitions -->
    <mvc:annotation-driven />

    <!-- Add JPA support -->
    <bean id="emf" class=
            "org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="loadTimeWeaver">
            <bean class=
                          "org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"/>
        </property>
    </bean>

    <!-- Add Transaction support -->
    <bean id="transactionManager"
          class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="emf"/>
    </bean>

    <!-- Use @Transaction annotations for managing transactions -->
    <tx:annotation-driven transaction-manager="transactionManager" />

    <!-- View resolver -->
    <bean class=

<!-- HERE YOU REPLACE PROPERTY VALUE TO MATCH YOUR VIEW FOLDER (JSP PAGES) -->
                  "org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/web/"/> 
        <property name="suffix" value=".jsp"/>
    </bean>

</beans>

0voto

Alejandro Points 63

Trop tard, mais cela a résolu mon problème :

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
    <version>1.9.4.RELEASE</version>
</dependency>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X