web-dev-qa-db-fra.com

Spring schemaLocation échoue en l'absence de connexion Internet

J'utilise Spring et in application-context.xml J'ai les définitions suivantes:

<?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:util="http://www.springframework.org/schema/util"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:aop="http://www.springframework.org/schema/aop"
   xmlns:tx="http://www.springframework.org/schema/tx"
   xmlns:p="http://www.springframework.org/schema/p"
   xmlns:security="http://www.springframework.org/schema/security"
   xsi:schemaLocation="
   http://www.springframework.org/schema/beans 
   http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
   http://www.springframework.org/schema/util 
   http://www.springframework.org/schema/util/spring-util-2.0.xsd
   http://www.springframework.org/schema/context
   http://www.springframework.org/schema/context/spring-context-2.1.xsd
   http://www.springframework.org/schema/tx
   http://www.springframework.org/schema/tx/spring-tx.xsd
   http://www.springframework.org/schema/aop
   http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
   http://www.springframework.org/schema/security
   http://www.springframework.org/schema/security/spring-security-2.0.xsd"
   >

.....

Lorsque ma connexion Internet est perdue, je ne peux pas exécuter mon application via Tomcat ou une jetée.

Il donne:

[main] WARN  org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Ignored XML validation warning
org.xml.sax.SAXParseException: schema_reference.4: Failed to read schema document '/spring-beans-2.0.xsd', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not <xsd:schema>.
    at com.Sun.org.Apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.Java:195)
    at com.Sun.org.Apache.xerces.internal.util.ErrorHandlerWrapper.warning(ErrorHandlerWrapper.Java:96)
    at com.Sun.org.Apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.Java:380)
    at com.Sun.org.Apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.Java:318)
    at com.Sun.org.Apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaErr(XSDHandler.Java:2541)
    at com.Sun.org.Apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaWarning(XSDHandler.Java:2532)
    at com.Sun.org.Apache.xerces.internal.impl.xs.traversers.XSDHandler.getSchemaDocument(XSDHandler.Java:1836)
    at com.Sun.org.Apache.xerces.internal.impl.xs.traversers.XSDHandler.parseSchema(XSDHandler.Java:531)
    at com.Sun.org.Apache.xerces.internal.impl.xs.XMLSchemaLoader.loadSchema(XMLSchemaLoader.Java:552)
    at com.Sun.org.Apache.xerces.internal.impl.xs.XMLSchemaValidator.findSchemaGrammar(XMLSchemaValidator.Java:2408)
    at com.Sun.org.Apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.Java:1753)
    at com.Sun.org.Apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.Java:685)
    at com.Sun.org.Apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.Java:400)
    at com.Sun.org.Apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.Java:626)
    at com.Sun.org.Apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.Java:3095)
    at com.Sun.org.Apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.Java:921)
    at com.Sun.org.Apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.Java:648)
    at com.Sun.org.Apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.Java:140)
    at com.Sun.org.Apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.Java:510)
    at com.Sun.org.Apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.Java:807)
    at com.Sun.org.Apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.Java:737)
    at com.Sun.org.Apache.xerces.internal.parsers.XMLParser.parse(XMLParser.Java:107)
    at com.Sun.org.Apache.xerces.internal.parsers.DOMParser.parse(DOMParser.Java:225)
    at com.Sun.org.Apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.Java:283)
    at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.Java:75)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.Java:396)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.Java:342)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.Java:310)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.Java:143)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.Java:178)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.Java:149)
    at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.Java:124)
    at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.Java:92)
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.Java:123)
    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.Java:423)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.Java:353)
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.Java:255)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.Java:199)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.Java:45)
    at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.Java:548)
    at org.mortbay.jetty.servlet.Context.startContext(Context.Java:136)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.Java:1250)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.Java:517)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.Java:467)
    at org.mortbay.jetty.plugin.Jetty6PluginWebAppContext.doStart(Jetty6PluginWebAppContext.Java:115)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.Java:50)
    at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.Java:152)
    at org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.Java:156)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.Java:50)
    at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.Java:152)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.Java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.Java:130)
    at org.mortbay.jetty.Server.doStart(Server.Java:224)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.Java:50)
    at org.mortbay.jetty.plugin.Jetty6PluginServer.start(Jetty6PluginServer.Java:132)
    at org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.Java:441)
    at org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.Java:383)
    at org.mortbay.jetty.plugin.AbstractJettyRunMojo.execute(AbstractJettyRunMojo.Java:210)
    at org.mortbay.jetty.plugin.Jetty6RunMojo.execute(Jetty6RunMojo.Java:184)
    at org.Apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.Java:483)
    at org.Apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.Java:678)
    at org.Apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.Java:553)
    at org.Apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.Java:523)
    at org.Apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.Java:371)
    at org.Apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.Java:332)
    at org.Apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.Java:181)
    at org.Apache.maven.DefaultMaven.doExecute(DefaultMaven.Java:356)
    at org.Apache.maven.DefaultMaven.execute(DefaultMaven.Java:137)
    at org.Apache.maven.cli.MavenCli.main(MavenCli.Java:356)
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:39)
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:25)
    at Java.lang.reflect.Method.invoke(Method.Java:597)
    at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.Java:315)
    at org.codehaus.classworlds.Launcher.launch(Launcher.Java:255)
    at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.Java:430)
    at org.codehaus.classworlds.Launcher.main(Launcher.Java:375)
2009-11-13 15:31:25,675 [main] ERROR org.springframework.web.context.ContextLoader - Context initialization failed
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 23 in XML document from class path resource [application-context.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'beans'.
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.Java:404)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.Java:342)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinit........

Des suggestions comment résoudre ce problème?

99
Altug

Il n'est pas nécessaire d'utiliser le classpath: protocol dans votre URL schemaLocation si l'espace-noms est configuré correctement et que le fichier XSD se trouve sur votre classpath.

La documentation de printemps " Enregistrement du gestionnaire et du schéma " indique comment procéder.

Dans votre cas, le problème était probablement que le fichier jar-contexte de printemps sur votre chemin de classe n’était pas 2.1. C’est la raison pour laquelle changer le protocole en classpath: et placer le XSD 2.1 spécifique dans votre classpath corrigeait le problème.

D'après ce que j'ai vu, il existe 2 schémas définis pour le fichier XSD principal contenu dans un fichier jar. Une fois pour résoudre l'URL du schéma avec la version et une fois sans elle.

A titre d'exemple, voir cette partie du contenu de spring.schemas dans spring-context-3.0.5.RELEASE.jar:

http\://www.springframework.org/schema/context/spring-context-2.5.xsd=org/springframework/context/config/spring-context-2.5.xsd
http\://www.springframework.org/schema/context/spring-context-3.0.xsd=org/springframework/context/config/spring-context-3.0.xsd
http\://www.springframework.org/schema/context/spring-context.xsd=org/springframework/context/config/spring-context-3.0.xsd

Cela signifie que (dans xsi: schemaLocation)

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

sera validé contre

org/springframework/context/config/spring-context-2.5.xsd 

dans le classpath.

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

ou

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

sera validé contre

org/springframework/context/config/spring-context-3.0.xsd 

dans le classpath.

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

n'est pas défini, donc Spring le recherchera à l'aide de l'URL littérale définie dans schemaLocation.

110
David Resnick

Je l'ai résolu

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:util="http://www.springframework.org/schema/util"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:security="http://www.springframework.org/schema/security"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
       http://www.springframework.org/schema/util 
       http://www.springframework.org/schema/util/spring-util-2.0.xsd
       http://www.springframework.org/schema/context
       classpath:spring-context-2.1.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
       http://www.springframework.org/schema/security
       http://www.springframework.org/schema/security/spring-security-2.0.xsd"
       >

classpath:spring-context-2.1.xsd est la clé pour travailler en mode hors connexion (pas de connexion Internet). Aussi j'ai copié spring-context-2.1.xsd près du même répertoire que le fichier application-context.xml

28
Altug

Quelque chose comme ça a fonctionné pour moi.

xsi:schemaLocation=
"http://www.springframework.org/schema/beans 
             classpath:org/springframework/beans/factory/xml/spring-beans-3.0.xsd
http://www.springframework.org/schema/context 
             classpath:org/springframework/beans/factory/xml/spring-context-3.0.xsd"
17
godlikeNoob

Au cas où quelqu'un arriverait ici avec la même racine que moi - j'ai rencontré ce problème parce que je construisais un seul fichier JAR avec toutes les dépendances, y compris les fichiers JAR de Spring. En conséquence, le fichier spring.schemas de certains des répertoires META-INF des fichiers JAR de Spring a été écrasé.

J'ai trouvé des solutions suggérées ici: Comment créer un pot exécutable à base de ressort avec maven?

6
Ed .

Couru dans un problème similaire aujourd'hui. Dans mon cas, c’est le plug-in de coloris qui a été mis en cause, en plus de springframework.org en panne. L'extrait suivant clarifie les choses:

<transformer implementation="org.Apache.maven.plugins.shade.resource.AppendingTransformer">
   <resource>META-INF/spring.schemas</resource>
</transformer>
<transformer implementation="org.Apache.maven.plugins.shade.resource.AppendingTransformer">
    <resource>META-INF/spring.handlers</resource>
</transformer>

HTH quelqu'un

5
zackurey

Vous devriez vérifier que les fichiers spring.handlers Et spring.schemas Se trouvent sur le chemin d'accès aux classes et qu'ils ont le bon contenu.

Cela peut être fait avec ClassLoader.getResource(..). Vous pouvez exécuter la méthode avec un débogueur distant dans l'environnement d'exécution. La configuration de création XML extensible est décrite dans Spring Reference B.5. Enregistrement du gestionnaire et du schéma .

Normalement, les fichiers doivent se trouver dans le jar Spring (springframework.jar/META-INF /) et sur le chemin de classe lorsque Spring peut être lancé.

4
Thomas Jung

Trouver le chemin de classe

Si vous utilisez Eclipse, cliquez sur le fichier jar correspondant. Goto -> META-INF-> ouvrir le fichier spring.schemas

vous verrez les lignes comme ci-dessous.

http://www.springframework.org/schema/context/spring-context.xsd=org/springframework/context/config/spring-context-3.1.xsd

copier après = et configurer des beans comme ci-dessous.

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util" xmlns:rabbit="http://www.springframework.org/schema/rabbit" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/rabbit classpath:org/springframework/amqp/rabbit/config/spring-rabbit-1.1.xsd http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans-3.1.xsd http://www.springframework.org/schema/context classpath:org/springframework/context/config/spring-context-3.1.xsd http://www.springframework.org/schema/util classpath:org/springframework/beans/factory/xml/spring-util-3.1.xsd">

2

J'ai eu ce problème. Pour la postérité, mon exception était:

org.xml.sax.SAXParseException; lineNumber: 7; columnNumber: 117;
schema_reference.4: Failed to read schema document
'http://www.springframework.org/schema/beans/spring-beans-4.2.xsd'

Je l'ai résolu quand j'ai réalisé la version de spring-beans spécifié dans mon Maven pom.xml était 4.1.x, ce qui signifie donc le spécifique .xsd n'a pas pu être trouvé sur le classpath.

Cela a été masqué pendant longtemps parce que je suis normalement en ligne, alors je pensais qu'être hors ligne avait "cassé" la construction. Mais cela n’a vraiment rien à voir avec cela. Mise à jour de mon pom.xml pour spécifier la version correcte de spring-beans, à savoir 4.2.x, corrigé.

1
Stewart

Nous avons résolu le problème en procédant comme suit:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
factory.setValidating(false); // This avoid to search schema online
factory.setAttribute("http://Java.Sun.com/xml/jaxp/properties/schemaLanguage", "http://www.w3.org/2001/XMLSchema");
factory.setAttribute("http://Java.Sun.com/xml/jaxp/properties/schemaSource", "TransactionMessage_v1.0.xsd");

S'il vous plaît noter que notre application est une Java application autonome en mode hors connexion.

1
jyz

Vous devez ajouter des emplacements de schéma à votre définition de bean, puis ils peuvent être trouvés dans classpath au lieu d'être récupérés sur le réseau. Compte tenu de vos problèmes de formatage, je ne suis pas sûr à 100% que vous ne le fassiez pas déjà.

<?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-2.0.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<!-- empty: the beans we use are in the base class's context. -->
</beans>
1
bmargulies

Le problème réside dans les fichiers JAR que vous utilisez dans votre application.

Ce que j'ai fait, ce qui a bien fonctionné, a été d'entrer dans les fichiers JAR pour SPRING-CORE, SPRING-BEANS, SPRING-CONTEXT, SPRING-TX correspondant à la version que j'utilise. Dans le dossier META-INF, j'ai concaténé tous les Spring.handlers et spring.schemas qui entrent dans ces fichiers JAR.

J'ai tué deux oiseaux avec une pierre, j'ai résolu le problème des schémas afin que cela fonctionne également correctement en mode déconnecté.

P.S. J'ai essayé le plugin maven pour SHADE et les transformateurs mais cela n'a pas fonctionné.

1
Jose Luis Mendez

Si vous utilisez Eclipse pour votre développement, il est utile d’installer le plug-in STS pour Eclipse [à partir de marketPlace pour la version spécifique d’Eclipse.

Maintenant, lorsque vous essayez de créer un nouveau fichier de configuration dans un dossier (normalement des ressources) dans le projet, les options ont un "Dossier Spring" et vous pouvez choisir un "Fichier de définition du bean Spring", Spring> Fichier de configuration du bean Spring.

Lorsque cette option est sélectionnée, lorsque vous suivez les étapes, il vous est demandé de sélectionner des espaces de noms et des versions spécifiques:

Et ainsi la possibilité d'avoir un pot inexistant ou une ancienne version peut être éliminée.

J'aurais posté des images aussi, mais ma réputation est plutôt basse .. :(

1

Assurez-vous simplement que le fichier jar du printemps approprié se trouve dans votre chemin d'accès aux classes d'exécution. Dans mon cas, spring-tx-4.3.4.RELEASE.jar était absent du classpath d'exécution. Après avoir ajouté ce pot, le problème a été résolu.

0
Hari

J'avais rencontré ce problème similaire aussi. Dans mon cas, ma résolution est assez différente. Voici mon fichier XML de contexte de printemps:

...
<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"
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">
...

Je ne spécifie aucune version de xsd car je souhaite que spring utilise la dernière version de xsd à l'intérieur des dépendances de spring. La version de printemps que mon application utilisait était spring-beans-4.3.1.RELEASE.jar: 4.3.1.RELEASE et lorsque j'assemble mon application dans jar, toutes les dépendances de printemps existent dans mon classpath. Cependant, j'ai reçu l'erreur suivante lors du démarrage de mon contexte d'application Spring:

org.xml.sax.SAXParseException: schema_reference.4: Failed to read schema document 'http://www.springframework.org/schema/beans/spring-beans.xsd', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not <xsd:schema>.

Après quelques difficultés de dépannage, j'ai constaté que le problème était dû à index.list dans le dossier META-INF de mon fichier jar. Avec le fichier index.list, les gestionnaires de l'espace de noms Spring ne peuvent pas être localisés pour analyser correctement le contexte XML de l'application Spring. Vous pouvez en savoir plus sur ce numéro de printemps SPR-5705

En supprimant l'indexation de mon maven-jar-plugin, je parviens à résoudre le problème. J'espère que cela permettra de gagner du temps pour les personnes ayant le même problème.

0
Andy Ng

J'ai eu le même problème lorsque j'utilise la version 4.0.6 de Spring-Context et la version 4.1.0 de Spring-Security.

Lors du passage à la version 4.0.4 de spring-security (car 4.0.6 de spring-security n'est pas disponible) dans mon pom et xml de sécurité -> schemaLocation, il est compilé sans Internet.

Cela signifie donc que vous pouvez également résoudre ce problème en:

  • changer la sécurité de printemps à une version plus ancienne ou identique à celle de printemps-contexte.

  • changer le contexte de printemps en une version plus récente ou identique à celle de printemps.

(de toute façon printemps-contexte d'être plus récent ou la même version de printemps-sécurité)

0
Yasitha Bandara

S'il n'y a pas de connexion Internet sur votre plate-forme et que vous utilisez Eclipse, suivez ces étapes (cela résout mon problème)

  1. Recherchez les fichiers xsd exacts (vous pouvez décompresser ces fichiers à partir de leurs fichiers jar. Par exemple, spring-beans-x.y.xsd dans spring-beans-x.y.RELEASE.jar)
  2. Ajoutez ces fichiers xsd au catalogue XML Eclipse. (Préférences-> XML-> Catalogue XML, Ajouter des fichiers)
  3. Ajoutez l'emplacement de ces fichiers au fichier de configuration. (Faites attention, écrivez la version exacte du fichier)

Exemple:

xsi: schemaLocation = " http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-xyxsd "

0
gbii

J'aimerais ajouter un aspect supplémentaire à cette discussion. Dans Windows OS, j'ai observé que lorsqu'un fichier JAR contenant un schéma est stocké dans un répertoire dont le chemin contient un caractère d'espacement, comme dans l'exemple suivant

"c:\Program Files\myApp\spring-beans-4.0.2.RELEASE.jar"

puis spécifier l'URL de l'emplacement du schéma de la manière suivante n'est pas suffisant lorsque vous développez une application autonome qui devrait également fonctionner hors ligne

<beans
 xsi:schemaLocation="
   http://www.springframework.org/schema/beans org/springframework/beans/factory/xml/spring-beans-2.0.xsd"
    />

J'ai appris que le résultat d'une telle résolution d'URL d'emplacement de schéma est un fichier dont le chemin est le suivant:

"c:\Program%20Files\myApp\spring-beans-4.0.2.RELEASE.jar"

Lorsque j'ai démarré mon application à partir d'un autre répertoire qui ne contenait pas d'espace dans son chemin, la résolution de l'emplacement du schéma fonctionnait correctement. Peut-être que quelqu'un a rencontré des problèmes similaires? Néanmoins, j'ai découvert que le protocole de classpath fonctionne bien dans mon cas.

<beans
 xsi:schemaLocation="
   http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans-2.0.xsd"
    />
0
Damiano