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:
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 :)
Je l'ai résolu en faisant 3 choses:
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>
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>
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.
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
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.
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.
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.
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
">
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...
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
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"
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.