web-dev-qa-db-fra.com

Erreur dans le schéma de contexte d'application printanier

J'ai un projet maven-spring dans Eclipse et j'ai ce message d'erreur gênant dans l'un de mes contextes de printemps:

Le fichier référencé contient des erreurs (jar: fichier: /M2_HOME/repository/org/springframework/spring-beans/3.1.2.RELEASE/spring-beans-3.1.2.RELEASE.jar!/Org/springframework/beans / factory/xml/spring-tool-3.1.xsd). Pour plus d'informations, cliquez avec le bouton droit sur le message dans la vue Problèmes et sélectionnez "Afficher les détails ...".

Le show setails mène à ceci:

enter image description here

J'utilise spring-data-jpa 1.2.0.RELEASE et le reste de mes bocaux de printemps sont 3.1.3.RELEASE. En ce qui concerne spring-data-commons-core - je n'ai même pas de dépendance à ce bocal dans mon pom mais je peux le voir dans mon référentiel m2 avec spring-data-commons-parent et les deux de la version 1.4.0.RELEASE , Je ne sais pas pourquoi (peut-être que cela fait partie de spring-data-jpa?).

Mon schéma de contexte d'application:

<?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:tx="http://www.springframework.org/schema/tx"
    xmlns:jpa="http://www.springframework.org/schema/data/jpa"
    xsi:schemaLocation="
   http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
   http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
   http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
   http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.2.xsd">

Je ne comprends pas pourquoi je continue à avoir cette erreur. En gros, elle n’a aucun effet. L’application est compilée, déployée et fonctionne très bien, c’est cette marque d’erreur rouge gênante dans Eclipse qui me rend fou :)

15
forhas

Je l'ai résolu en faisant 3 choses:

  1. Ajout de ce référentiel à mon POM:

    <repository>
        <id>spring-milestone</id>
        <name>Spring Maven MILESTONE Repository</name>
        <url>http://repo.springsource.org/libs-milestone</url>
    </repository>
    
  2. J'utilise cette version de spring-jpa:

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-jpa</artifactId>
        <version>1.2.0.RELEASE</version>
    </dependency>
    
  3. J'ai supprimé les versions de xsd de mon contexte (bien que je ne sois pas sûr que ce soit nécessaire):

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

J'espère que ça aide.

11
forhas

J'ai récemment rencontré un problème similaire dans le dernier Eclipse (Kepler) et je l'ai corrigé en désactivant l'option "Respecter tous les emplacements de schéma XML" dans Préférences> XML> Fichiers XML> Validation . à des emplacements de schéma différents, en prenant uniquement le premier trouvé généralement dans le fichier XML en cours de validation. Cette option provient de la bibliothèque Xerces.

WTP Doc: http://www.Eclipse.org/webtools/releases/3.1.0/newandnoteworthy/sourceediting.php

Xerces Doc: http://xerces.Apache.org/xerces2-j/features.html#honour-all-schemaLocations

19
Ulises

Ce que j'ai fait avec spring-data-jpa-1.3, c’est d’ajouter une version à xsd et de la baisser à 1.2. Ensuite, le message d'erreur disparaît. Comme ça

<beans
        xmlns="http://www.springframework.org/schema/beans"
        ...
        xmlns:jpa="http://www.springframework.org/schema/data/jpa"
        xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    ...
    http://www.springframework.org/schema/data/jpa
    http://www.springframework.org/schema/data/jpa/spring-jpa-1.2.xsd">

On dirait que cela a été corrigé pour 1.2 mais apparaît à nouveau dans 1.3.

7
user1278890

J'ai récemment eu le même problème avec Spring 4.0. 

Cela a été provoqué par une collision dans les noms de spring-beans-4.0.xsd et spring-context-4.0.xsd. En ouvrant spring-context-4.0.xsd, vous pouvez voir que spring-beans-4.0.xsd est importé comme suit:

<xsd:import namespace="http://www.springframework.org/schema/beans"  
schemaLocation="http://www.springframework.org/schema/beans/spring-beans-4.0.xsd"/>

Eclipse se plaint du "... Un schéma ne peut pas contenir deux composants globaux du même nom ..."

Un aspect remarquable est que je n'avais pas ce problème avec Eclipse Kepler SR2 mais Eclipse Luna SR1, en comparant les deux préférences concernant la validation XML, elles étaient identiques.

Il a été résolu en supprimant spring-context-4.0.xsd de l'attribut xsi: schemaLocation:

http://www.springframework.org/schema/context   
http://www.springframework.org/schema/context/spring-context-4.0.xsd

Après cela, tout a fonctionné comme prévu.

4
ame-h

Ce que @forhas et @HRgiger ont également fonctionné pour moi. J'utilise spring-data-mongodb au lieu de jpa

Cependant, pour les liaisons mongodb, vous ne devez pas supprimer la version de mongodb reference xsd, conservez-la simplement avec version: http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd. Les versions context et beans doivent être supprimées.

3
tugcem

J'ai récemment eu le même problème avec JPA-1.3

Rien n'a fonctionné jusqu'à ce que j'utilise explicitement le lien tools.xsd

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

comme ça:

<?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:tx="http://www.springframework.org/schema/tx"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    xmlns:jpa="http://www.springframework.org/schema/data/jpa"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/tx 
        http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
        http://www.springframework.org/schema/jdbc 
        http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
        http://www.springframework.org/schema/data/jpa
        http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
        http://www.springframework.org/schema/tool
        http://www.springframework.org/schema/tool/spring-tool-3.2.xsd
        ">
3
snowindy

Parfois, le fichier XML config de printemps ne fonctionne pas bien lors de la prochaine ouverture d’Eclipse.

Il montre une erreur dans le fichier xml causée par la définition du schéma, peu importe la réouverture d'Eclipse ou le projet de nettoyage ne fonctionnent pas tous les deux.

Mais essayez ceci!

Cliquez avec le bouton droit sur le fichier XML print config, puis sélectionnez validate.

Après un moment, l'erreur disparaît et Eclipse vous dit qu'il n'y a pas d'erreur sur ce fichier.

Quelle blague...

3
Ajax

J'ai supprimé cette erreur en mettant à jour le numéro de version dans

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

à 4.3 que j'avais upadated version de printemps dans pom comme 4.3.7.LELEASE

1
Sameer Sinha

utilisez ceci:

xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
    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/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"
0
ankit

J'ai également fait face à ce problème et l'ai corrigé en supprimant la partie de version du nom XSD.

http://www.springframework.org/schema/beans/spring-beans-4.2.xsd to http://www.springframework.org/schema/beans/spring-beans.xsd

Les versions moins XSD sont mappées sur la version actuelle de la structure utilisée dans l'application.

0
arunveersingh