Ich benutze Spring und application-context.xml
habe folgende Definitionen:
<?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"
>
..... .....
Wenn meine Internetverbindung unterbrochen wird, kann ich meine Anwendung nicht über Tomcat oder Jetty ausführen.
Es gibt:
[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........
Irgendwelche Vorschläge, wie man das Problem behebt?
Ich habe es gelöst
classpath:spring-context-2.1.xsd
ist der Schlüssel für den Offline-Modus (keine Internetverbindung). Außerdem habe ich in derspring-context-2.1.xsd
Nähe (dasselbe Verzeichnis) der Datei application-context.xml kopiertquelle
So etwas hat bei mir funktioniert.
quelle
Falls jemand über dieselbe Wurzel wie ich hier ankommt, bin ich auf dieses Problem gestoßen, weil ich eine einzelne JAR mit allen Abhängigkeiten erstellt habe, einschließlich Spring JARs. Infolgedessen wurde die Datei spring.schemas in einigen META-INF- Verzeichnissen von Spring JARs überschrieben.
Ich habe hier Lösungsvorschläge gefunden: Wie erstelle ich mit maven ein Spring-basiertes ausführbares Glas?
quelle
Bin heute auf ein ähnliches Problem gestoßen. In meinem Fall war das Schatten-Plugin der Schuldige, zusätzlich zu springframework.org, das einen Ausfall hatte. Das folgende Snippet hat die Dinge geklärt:
HTH jemand
quelle
Sie sollten überprüfen, ob sich die Dateien
spring.handlers
undspring.schemas
im Klassenpfad befinden und den richtigen Inhalt haben.Dies kann mit gemacht werden
ClassLoader.getResource(..)
. Sie können die Methode mit einem Remote-Debugger in der Laufzeitumgebung ausführen . Das erweiterbare XML-Authoring-Setup wird in der Spring-Referenz B.5 beschrieben. Registrieren des Handlers und des Schemas .Normalerweise sollten sich die Dateien im Spring-Jar (springframework.jar / META-INF /) und im Klassenpfad befinden, wenn Spring initiiert werden kann.
quelle
Klassenpfad suchen
Wenn Sie Eclipse verwenden, klicken Sie auf die entsprechende JAR-Datei. Gehe zu -> META-INF-> Datei spring.schemas öffnen
Sie werden die Zeilen wie folgt sehen.
http://www.springframework.org/schema/context/spring-context.xsd=org/springframework/context/config/spring-context-3.1.xsd
kopiere nach = und konfiguriere Beans wie folgt.
<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">
quelle
Sie müssen Ihrer Bean-Definition Schema-Speicherorte hinzufügen, die dann im Klassenpfad gefunden werden können, anstatt über das Netz abgerufen zu werden. Angesichts Ihrer Formatierungsprobleme bin ich mir nicht 100% sicher, dass Sie dies noch nicht tun.
quelle
Wir haben das Problem damit gelöst:
Bitte beachten Sie, dass unsere Anwendung eine eigenständige Java-Offline-App ist.
quelle
Wenn Sie Eclipse für Ihre Entwicklung verwenden, ist es hilfreich, wenn Sie das STS-Plugin für Eclipse [vom marketPlace für die spezifische Version von Eclipse] installieren.
Wenn Sie jetzt versuchen, eine neue Konfigurationsdatei in einem Ordner (normalerweise Ressourcen) innerhalb des Projekts zu erstellen, haben die Optionen einen "Spring-Ordner" und Sie können die Option "Spring Bean-Definitionsdatei" Spring> Spring Bean-Konfigurationsdatei auswählen.
Wenn diese Option ausgewählt ist und Sie die Schritte ausführen, werden Sie aufgefordert, Namespaces und die spezifischen Versionen auszuwählen:
Und so kann die Möglichkeit eines nicht existierenden Glases oder einer alten Version ausgeschlossen werden.
Hätte auch Bilder gepostet, aber mein Ruf ist ziemlich niedrig .. :(
quelle
Das Problem liegt in den JAR-Dateien, die Sie in Ihrer Anwendung verwenden.
Was ich getan habe, was funktioniert hat, war, in die JARs für SPRING-CORE, SPRING-BEANS, SPRING-CONTEXT, SPRING-TX zu gelangen, die der von mir verwendeten Version entsprechen. Im META-INF-Ordner habe ich alle spring.handlers und spring.schemas verkettet, die in diesen JARs enthalten sind.
Ich habe zwei Fliegen mit einer Klappe geschlagen und das Problem der Schemata gelöst, sodass dies auch im Offline-Modus korrekt funktioniert.
PS Ich habe das Maven-Plugin für SHADE und die Transformatoren ausprobiert, aber das hat nicht funktioniert.
quelle
Ich hatte dieses Problem. Für die Nachwelt war meine Ausnahme:
Ich habe es gelöst, als ich feststellte, dass die
spring-beans
in meinem Maven angegebene Versionpom.xml
war4.1.x
, was bedeutet, dass die spezifische Version.xsd
nicht im Klassenpfad gefunden werden konnte.Dies wurde für eine lange Zeit maskiert, weil ich normalerweise online bin, also dachte ich, offline zu sein hätte den Build "kaputt gemacht". Aber es hatte wirklich nichts damit zu tun. Das Aktualisieren von my
pom.xml
, um die richtige Version von anzugebenspring-beans
, hat es nämlich4.2.x
behoben.quelle
Ich hatte das gleiche Problem, als ich Spring-Context Version 4.0.6 und Spring-Security Version 4.1.0 verwendete.
Wenn ich die Spring-Security-Version in meiner POM- und Sicherheits-XML -> schemaLocation auf 4.0.4 ändere (da 4.0.6 von Spring-Security nicht verfügbar ist), wird sie ohne Internet kompiliert.
Das heißt, Sie können dies auch lösen, indem Sie:
Ändern der Federsicherheit auf eine ältere oder gleiche Version als der Federkontext.
Ändern des Federkontexts auf eine neuere oder gleiche Version als die Federsicherheit.
(Wie auch immer, Spring-Kontext ist neuer oder dieselbe Version von Spring-Security)
quelle
Ich möchte einen zusätzlichen Aspekt dieser Diskussion hinzufügen. Unter Windows habe ich festgestellt, dass eine JAR-Datei, die ein Schema enthält, in einem Verzeichnis gespeichert ist, dessen Pfad ein Leerzeichen enthält, beispielsweise wie im folgenden Beispiel
Wenn Sie eine eigenständige Anwendung entwickeln, die auch offline funktionieren soll, reicht es nicht aus, die URL des Schemastandorts wie folgt anzugeben
Ich habe erfahren, dass das Ergebnis einer solchen URL-Auflösung des Schema-Speicherorts eine Datei ist, die einen Pfad wie den folgenden hat
Als ich meine Anwendung von einem anderen Verzeichnis aus startete, das kein Leerzeichen auf dem Pfad enthielt, funktionierte die Auflösung des Schema-Speicherorts einwandfrei. Vielleicht hatte jemand ähnliche Probleme? Trotzdem habe ich festgestellt, dass das Klassenpfadprotokoll in meinem Fall gut funktioniert
quelle
Ich war auch auf dieses ähnliche Problem gestoßen. In meinem Fall ist meine Auflösung ganz anders. Hier ist meine XML-Datei für den Frühlingskontext:
Ich gebe keine xsd-Version an, da Spring die neueste xsd-Version innerhalb der Spring-Abhängigkeiten verwenden soll. Die von meiner Anwendung verwendete Spring- Version war spring-bean-4.3.1.RELEASE.jar: 4.3.1.RELEASE. Wenn ich meine Anwendung in jar zusammenstelle, sind alle Spring-Abhängigkeiten in meinem Klassenpfad vorhanden. Beim Start meines Spring-Anwendungskontexts wurde jedoch die folgende Fehlermeldung angezeigt:
Nach einiger schwieriger Fehlerbehebung stellte ich fest, dass das Problem auf die index.list im META-INF-Ordner meiner JAR-Datei zurückzuführen ist. Mit der Datei index.list können Spring-Namespace-Handler nicht gefunden werden, um den XML-Kontext der Spring-Anwendung korrekt zu analysieren. Weitere Informationen zu dieser Frühjahrsausgabe finden Sie hier SPR-5705
Durch Entfernen der Indizierung aus meinem Maven-Jar-Plugin kann ich das Problem beheben. Ich hoffe, dies spart einige Zeit für Menschen mit dem gleichen Problem.
quelle
Stellen Sie einfach sicher, dass sich die entsprechende Spring-JAR-Datei in Ihrem Laufzeitklassenpfad befindet. In meinem Fall fehlte spring-tx-4.3.4.RELEASE.jar im Laufzeitklassenpfad. Nach dem Hinzufügen dieses JARs wurde das Problem behoben.
quelle
Wenn auf Ihrer Plattform keine Internetverbindung besteht und Sie Eclipse verwenden, führen Sie die folgenden Schritte aus (dies löst mein Problem).
Beispiel:
quelle
Entfernen Sie kürzlich hinzugefügte Gläser in der web-inf -> lib. Zum Beispiel JSTL-Gläser.
quelle