Używam Springa i application-context.xml
mam następujące definicje:
<?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"
>
.....
W przypadku utraty połączenia internetowego nie mogę uruchomić aplikacji za pośrednictwem programu Tomcat ani Molo.
To daje:
[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........
Jakieś sugestie, jak to naprawić?
Rozwiązałem to
classpath:spring-context-2.1.xsd
jest kluczem do pracy w trybie offline (bez połączenia z Internetem). Skopiowałem również wspring-context-2.1.xsd
pobliżu (tego samego katalogu) plik application-context.xmlźródło
Coś takiego działało na mnie.
źródło
Na wypadek, gdyby ktoś dotarł tutaj przez ten sam root, co ja - napotkałem ten problem, ponieważ budowałem pojedynczy plik JAR ze wszystkimi zależnościami, w tym Spring JAR. W rezultacie plik spring.schemas w niektórych katalogach META-INF plików Spring JAR został nadpisany.
Sugerowane rozwiązania znalazłem tutaj: Jak stworzyć plik jar wykonywalny na bazie wiosny za pomocą maven?
źródło
Dzisiaj napotkałem podobny problem. W moim przypadku to wtyczka cieni była winowajcą, oprócz awarii springframework.org. Poniższy fragment wyjaśnił sprawę:
Ktoś HTH
źródło
Powinieneś sprawdzić,
spring.handlers
czyspring.schemas
pliki i znajdują się w ścieżce klas i mają odpowiednią zawartość.Można to zrobić za pomocą
ClassLoader.getResource(..)
. Metodę można uruchomić za pomocą zdalnego debugera w środowisku wykonawczym. Rozszerzalną konfigurację tworzenia XML opisano w dokumencie Spring Reference B.5. Rejestrowanie procedury obsługi i schematu .Zwykle pliki powinny znajdować się w pliku spring jar (springframework.jar / META-INF /) i na ścieżce klas, kiedy można zainicjować Spring.
źródło
Znajdź ścieżkę zajęć
Jeśli używasz eclipse, kliknij odpowiedni plik jar. Idź do -> META-INF-> otwórz plik spring.schemas
zobaczysz linie jak poniżej.
http://www.springframework.org/schema/context/spring-context.xsd=org/springframework/context/config/spring-context-3.1.xsd
skopiuj po = i skonfiguruj ziarna, jak poniżej.
<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">
źródło
Musisz dodać lokalizacje schematu do swojej definicji fasoli, a następnie można je znaleźć w ścieżce klas zamiast pobierać przez sieć. Biorąc pod uwagę problemy z formatowaniem, nie jestem w 100% pewien, czy jeszcze tego nie robisz.
źródło
Rozwiązaliśmy problem w ten sposób:
Należy pamiętać, że nasza aplikacja jest samodzielną aplikacją offline w języku Java.
źródło
Jeśli używasz eclipse do rozwoju, pomocne będzie zainstalowanie wtyczki STS dla Eclipse [z marketPlace dla określonej wersji eclipse.
Teraz Kiedy próbujesz utworzyć nowy plik konfiguracyjny w folderze (zwykle zasobach) wewnątrz projektu, opcje miałyby „Folder wiosenny” i możesz wybrać opcję „Plik definicji Spring Bean” Wiosna> Plik konfiguracyjny Spring Bean.
Po zaznaczeniu tej opcji podczas wykonywania kroków prosi o wybranie przestrzeni nazw i określonych wersji:
W ten sposób można wyeliminować możliwość posiadania nieistniejącego słoika lub starej wersji.
Opublikowałbym również zdjęcia, ale moja reputacja jest dość niska .. :(
źródło
Problem leży w plikach JAR, których używasz w swojej aplikacji.
To, co zrobiłem, co zadziałało, to dostać się do słoików dla SPRING-CORE, SPRING-BEANS, SPRING-CONTEXT, SPRING-TX, które pasują do wersji, której używam. W folderze META-INF połączyłem wszystkie schematy spring.handlers i spring.schemes, które znajdują się w tych plikach JAR.
Upiłem dwie pieczenie na jednym ogniu, rozwiązałem problem schematów więc to też działa poprawnie w trybie offline.
PS Próbowałem wtyczki maven dla SHADE i transformatorów, ale to nie zadziałało.
źródło
Miałem ten problem. Dla potomności moim wyjątkiem był:
Rozwiązałem to, gdy zdałem sobie sprawę, że wersja
spring-beans
podana w moim Maveniepom.xml
była4.1.x
, co oznacza, że.xsd
nie można znaleźć tego konkretnego w ścieżce klas.Przez długi czas było to zamaskowane, ponieważ normalnie jestem online, więc pomyślałem, że bycie offline „zepsuło” kompilację. Ale to naprawdę nie miało z tym nic wspólnego. Aktualizacja mojego,
pom.xml
aby określić poprawną wersjęspring-beans
, a mianowicie4.2.x
naprawiona.źródło
Miałem ten sam problem, gdy używam wersji 4.0.6 z kontekstem wiosennym i wersji 4.1.0 zabezpieczeń wiosny.
Kiedy zmieniam wersję Spring-Security na 4.0.4 (ponieważ 4.0.6 Spring-Security nie jest dostępna) w moim pom i security xml -> schemaLocation, zostaje skompilowany bez internetu.
Oznacza to, że możesz również rozwiązać ten problem poprzez:
zmiana zabezpieczenia sprężynowego na starszą lub taką samą wersję niż kontekst sprężynowy.
zmiana kontekstu sprężyny na nowszą lub taką samą wersję niż zabezpieczenia sprężynowe.
(w każdym razie kontekst wiosenny ma być nowszy lub ta sama wersja co zabezpieczenia sprężyny)
źródło
Chciałbym dodać dodatkowy aspekt tej dyskusji. W systemie Windows zauważyłem, że gdy plik jar zawierający schemat jest przechowywany w katalogu, którego ścieżka zawiera znak spacji, na przykład jak w poniższym przykładzie
wtedy określenie adresu URL lokalizacji schematu w następujący sposób nie jest wystarczające, gdy tworzysz samodzielną aplikację, która powinna działać również offline
Dowiedziałem się, że wynikiem takiego rozwiązania adresu URL lokalizacji schematu jest plik, który ma ścieżkę podobną do poniższej
Kiedy uruchomiłem moją aplikację z innego katalogu, który nie zawierał znaku spacji na swojej ścieżce, rozpoznawanie lokalizacji schematu działało dobrze. Może ktoś napotkał podobne problemy? Niemniej jednak odkryłem, że protokół classpath działa dobrze w moim przypadku
źródło
Miałem też podobny problem. W moim przypadku moja rozdzielczość jest zupełnie inna. Oto mój plik xml kontekstu wiosny:
Nie określam żadnej wersji xsd, ponieważ chcę, aby Spring używał najnowszej wersji xsd w zależnościach spring. Wersja wiosenna, z której korzystałem, to spring-beans-4.3.1.RELEASE.jar: 4.3.1.RELEASE i kiedy składam moją aplikację w jar, wszystkie zależności sprężynowe istnieją w mojej ścieżce klas. Otrzymałem jednak następujący błąd podczas uruchamiania mojego kontekstu aplikacji wiosennej:
Po trudnym czasie rozwiązywania problemu odkryłem, że problem jest spowodowany przez plik index.list w folderze META-INF mojego pliku jar. W przypadku pliku index.list nie można zlokalizować programów obsługi przestrzeni nazw spring, aby poprawnie przeanalizować plik XML kontekstu aplikacji Spring. Więcej o tym wiosennym numerze SPR-5705 przeczytasz
Usuwając indeksowanie z mojej wtyczki maven-jar-plugin , udało mi się rozwiązać problem. Mam nadzieję, że zaoszczędzi to trochę czasu osobom mającym ten sam problem.
źródło
Po prostu upewnij się, że odpowiedni plik jar sprężyny znajduje się w ścieżce klas środowiska wykonawczego. W moim przypadku brakowało spring-tx-4.3.4.RELEASE.jar ze ścieżki klas środowiska wykonawczego. Po dodaniu tego słoika problem został rozwiązany.
źródło
Jeśli na Twojej platformie nie ma połączenia z Internetem, a używasz Eclipse, wykonaj następujące kroki (to rozwiązuje mój problem)
Przykład:
źródło
Usuń pliki JAR, które ostatnio dodałeś w web-inf -> lib. na przykład jstl jars.
źródło