J'utilise Spring et 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 Jetty.
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 pour y remédier?
Je l'ai résolu
classpath:spring-context-2.1.xsd
est la clé pour travailler en mode hors ligne (pas de connexion Internet). J'ai également copiéspring-context-2.1.xsd
près (même répertoire) le fichier application-context.xmlla source
Quelque chose comme ça a fonctionné pour moi.
la source
Au cas où quelqu'un arriverait ici via la même racine que moi - j'ai rencontré ce problème parce que je construisais un seul JAR avec toutes les dépendances, y compris les JAR Spring. En conséquence, le fichier spring.schemas dans certains des répertoires META-INF des Spring JAR a été écrasé.
J'ai trouvé des solutions suggérées ici: Comment créer un fichier exécutable à base de ressorts avec maven?
la source
Ran dans un problème similaire aujourd'hui. Dans mon cas, c'était le plugin de l'ombre qui était le coupable, en plus de springframework.org ayant une panne. L'extrait suivant a clarifié les choses:
HTH quelqu'un
la source
Vous devez vérifier que les fichiers
spring.handlers
et sespring.schemas
trouvent sur le chemin de classe et 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 la création XML extensible est décrite dans la référence Spring B.5. Enregistrement du gestionnaire et du schéma .Normalement, les fichiers doivent être dans le fichier spring jar (springframework.jar / META-INF /) et sur le chemin de classe lorsque Spring peut être lancé.
la source
Trouver le chemin de la classe
Si vous utilisez eclipse, cliquez sur le fichier jar correspondant. Aller à -> META-INF-> ouvrir le fichier spring.schemas
vous verrez les lignes quelque chose 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 les 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">
la source
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 faites pas déjà.
la source
Nous avons résolu le problème en faisant ceci:
Veuillez noter que notre application est une application Java autonome hors ligne.
la source
Si vous utilisez eclipse pour votre développement, il est utile d'installer le plugin STS pour Eclipse [à partir du 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) à l'intérieur du projet, les options auront un "Spring Folder" et vous pouvez choisir une option "Spring Bean Definition File" Spring> Spring Bean Configuation File.
Lorsque cette option est sélectionnée, lorsque vous suivez les étapes, il vous demande de sélectionner les espaces de noms et les versions spécifiques:
Et ainsi la possibilité d'avoir un pot inexistant ou une ancienne version peut être éliminée.
J'aurais également publié des images, mais ma réputation est assez faible .. :(
la source
Le problème réside dans les fichiers JAR que vous utilisez dans votre application.
Ce que j'ai fait, ce qui a fonctionné, a été d'entrer dans les JAR pour SPRING-CORE, SPRING-BEANS, SPRING-CONTEXT, SPRING-TX qui correspondent à la version que j'utilise. Dans le dossier META-INF, j'ai concaténé tous les spring.handlers et spring.schemas qui viennent dans ces JAR.
J'ai tué d'une pierre deux coups, j'ai résolu le problème des schémas donc cela fonctionne également correctement en mode hors ligne.
PS J'ai essayé le plugin maven pour SHADE et les transformateurs mais cela n'a pas fonctionné.
la source
J'ai eu ce problème. Pour la postérité, mon exception était:
Je l'ai résolu quand j'ai réalisé que la version de
spring-beans
spécifié dans mon Mavenpom.xml
était4.1.x
, ce qui signifie que le spécifique.xsd
ne pouvait pas être trouvé sur le chemin de classe.Cela a été masqué pendant longtemps parce que je suis normalement en ligne, donc je pensais qu'être hors ligne avait "cassé" la construction. Mais cela n'avait vraiment rien à voir avec ça. Mettre
pom.xml
à jour my pour spécifier la version correcte despring-beans
, à savoir4.2.x
, l'a corrigé.la source
J'ai eu le même problème lorsque j'utilise la version Spring-context 4.0.6 et la version Spring-Security 4.1.0.
Lors du changement de la version de spring-security vers 4.0.4 (car 4.0.6 de spring-security n'est pas disponible) dans mon pom et security xml -> schemaLocation, il est compilé sans Internet.
Cela signifie que vous pouvez également résoudre ce problème en:
changement de spring-security vers une version plus ancienne ou identique à spring-context.
changement de spring-context vers une version plus récente ou identique à spring-security.
(de toute façon spring-context pour être plus récent ou même version de spring-security)
la source
Je voudrais 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'espace, par exemple comme dans l'exemple suivant
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
J'ai appris que le résultat d'une telle résolution d'URL d'emplacement de schéma est un fichier qui a un chemin comme le suivant
Lorsque j'ai démarré mon application à partir d'un autre répertoire qui ne contenait pas de caractère espace sur son chemin, la résolution de l'emplacement du schéma fonctionnait bien. Peut-être que quelqu'un a rencontré des problèmes similaires? Néanmoins, j'ai découvert que le protocole classpath fonctionne très bien dans mon cas
la source
J'avais également rencontré ce problème similaire. Dans mon cas, ma résolution est assez différente. Voici mon fichier xml de contexte de printemps:
Je ne spécifie aucune version xsd car je veux que spring utilise la dernière version xsd dans les dépendances de spring. La version Spring que mon application a utilisée était spring-beans-4.3.1.RELEASE.jar: 4.3.1.RELEASE et quand j'assemble mon application dans jar, toutes les dépendances spring existent dans mon classpath. Cependant, j'ai reçu l'erreur suivante lors du démarrage de mon contexte d'application Spring:
Après un dépannage difficile, j'ai trouvé que le problème était dû à l' index.list dans le dossier META-INF de mon fichier jar. Avec le fichier index.list , les gestionnaires d'espaces de noms Spring ne peuvent pas être localisés pour analyser correctement le xml de contexte d'application Spring. Vous pouvez en savoir plus sur ce numéro de printemps SPR-5705
En supprimant l'indexation de mon maven-jar-plugin , j'arrive à résoudre le problème. J'espère que cela permettra aux personnes ayant le même problème de gagner du temps.
la source
Assurez-vous simplement que le fichier jar spring correspondant se trouve dans votre chemin de classe d'exécution. Dans mon cas, il nous manquait spring-tx-4.3.4.RELEASE.jar dans le chemin des classes d'exécution. Après avoir ajouté ce fichier jar, le problème a été résolu.
la source
S'il n'y a pas de connexion Internet sur votre plateforme et que vous utilisez Eclipse, suivez ces étapes (cela résout mon problème)
Exemple:
la source
Supprimez les fichiers jars que vous avez ajoutés récemment dans le fichier web-inf -> lib. par exemple jstl jars.
la source