इंटरनेट कनेक्शन न होने पर स्प्रिंग स्कीमालैक्टेशन विफल हो जाता है


107

मैं वसंत का उपयोग कर रहा हूं और application-context.xmlमेरी निम्नलिखित परिभाषाएं हैं:

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

.....

जब मेरा इंटरनेट कनेक्शन खो जाता है, तो मैं अपना आवेदन टॉमकैट या जेटी के माध्यम से नहीं चला सकता।

यह देता है:

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

कोई सुझाव कैसे इसे ठीक करने के लिए?

जवाबों:


115

यदि आपके नामस्थान को सही तरीके से कॉन्फ़िगर किया गया है और आपके क्लासपाथ पर XSD फ़ाइल है तो क्लासपैथ का उपयोग करने की आवश्यकता नहीं है।

स्प्रिंग डॉक " हैंडलर और स्कीमा को पंजीकृत करना " दिखाता है कि इसे कैसे किया जाना चाहिए।

आपके मामले में, समस्या शायद यह थी कि आपके क्लासपथ पर वसंत-संदर्भ जार 2.1 नहीं था। यही कारण है कि प्रोटोकॉल को क्लासपाथ में बदल दिया गया था: और विशिष्ट 2.1 एक्सएसडी को अपने क्लासपाथ में डालकर समस्या को ठीक किया।

मैंने जो देखा है, उसमें वसंत में निहित मुख्य एक्सएसडी के लिए 2 स्कीमा परिभाषित हैं- * जार। एक बार संस्करण के साथ स्कीमा URL को हल करने के लिए और एक बार इसके बिना।

एक उदाहरण के रूप में देखें वसंत-प्रसंग के इस भाग को वसंत-संदर्भ में सामग्री 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

इसका मतलब यह है कि (xsi में: स्कीमालेकेशन)

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 

या

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

के खिलाफ मान्य किया जाएगा

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

क्लासपाथ में।

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

इसलिए परिभाषित नहीं किया गया है, इसलिए स्कीमा के रूप में परिभाषित शाब्दिक URL का उपयोग करके स्प्रिंग इसके लिए दिखेगा।


37
जिन्हें सारांश की आवश्यकता है: वसंत को कक्षापथ में स्कीमा नहीं मिल सकता है। स्प्रिंग कोर JAR में एक स्कीमा-> फ़ाइल नाम मैपिंग है जो JAR में शामिल है। यदि यह इसे हल नहीं कर सकता है तो यह वेब पर जाएगा।
एलेक्स

मैंने इसे इस तरह घोषित किया है "http:////www.springframework.org/schema/context http: ///www.springframework.org/schema/context/spring-context-4.0.xsd"। मेरे पास ग्लासफिश / डोमेन / डोमेन 1 / लीब में 4.0 जार है। जब भी मैं परियोजना को तैनात करता हूं, ग्लासफिश इंटरनेट को संदर्भित करता है। क्या यह मुद्दा ग्लासफिश-4.0 के लिए विशिष्ट है? (स्वरूपण के लिए अधिक जोड़ा गया)
प्रागलथन एम

मुझे लगता है कि नया "हैंडलर और स्कीमा रजिस्टर करना" लिंक यहां होना चाहिए: docs.spring.io/spring/docs/current/spring-framework-reference/…
डर्क

1
@ डर्क - वह लिंक टूटा हुआ प्रतीत होता है
स्टॉर्मक्लाउड

2
@ स्टॉर्मक्लाउड, हां, मूल लिंक वापस दिखाई देता है और जिसे मैंने सुझाया था वह टूट गया है। यहाँ नवीनतम दस्तावेज़ लिंक है: docs.spring.io/spring/docs/current/spring-framework-reference/…
डिर्क

28

मैंने इसे हल किया

<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ऑफ़लाइन मोड (बिना इंटरनेट कनेक्शन) के काम करने की कुंजी है। इसके अलावा, मैं spring-context-2.1.xsdआवेदन (संदर्भ) एक ही निर्देशिका के पास-प्रसंग। xml फ़ाइल को कॉपी करता हूं


6
Intellij उपयोगकर्ताओं के लिए जो इसमें भाग सकते हैं। यह तब भी काम करता है, जब इंटेलीज स्कीमलैक्टेशन के अंदर क्लासपैथ सिंटैक्स को पहचान नहीं पाता है और इसे त्रुटि के रूप में उजागर करता है।
उन्नयन

एक बहुत बड़ा शुक्रिया @DaveParoulek - त्रुटि मुझे फेंक रही थी लेकिन यह बिल्कुल चाल है।
जैच जॉनसन

18

मेरे लिए कुछ इस तरह से काम किया।

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"

1
हां यह काम करता है क्योंकि xsd को स्प्रिंग जार के अंदर पैक किया जाता है। तो जब आप जार के अंदर xsd का उपयोग कर सकते हैं तो स्प्रिंगफ्रामवर्क डॉट कॉम पर जांच करने की कोई आवश्यकता नहीं है
सोमाया कुंबेरा

इस समाधान ने मेरे लिए काम किया क्योंकि मेरे पास जार के अंदर वसंत पर निर्भरता थी, जिसका मतलब है कि एक बाहरी जार के रूप में और इंटरनेट के बिना आपका समाधान मेरे लिए बहुत अच्छी तरह से काम करता है धन्यवाद एक ईश्वर का आशीर्वाद।
चिपेरॉर्टिज़

@godlikeNoob मैंने यह कोशिश की लेकिन इसकी फिर से त्रुटि "cvc-elt.1: तत्व 'बीन्स' की घोषणा नहीं मिल सकती।"
कामिनी

6

यदि किसी ने भी उसी रूट के माध्यम से यहां पहुंचता है, जो मैंने किया था - मैंने इस समस्या को मारा क्योंकि मैं सभी निर्भरता के साथ सिंगल जार का निर्माण कर रहा था, जिसमें स्प्रिंग जार भी शामिल है। नतीजतन spring.schemas में से कुछ में फ़ाइल META-INF स्प्रिंग जार की निर्देशिका ओवरराइट था।

मुझे यहां सुझाए गए समाधान मिले: मावेन के साथ वसंत-आधारित निष्पादन योग्य जार कैसे बनाएं?


5

आज एक समान मुद्दे में भाग गया। मेरे मामले में, यह शेड प्लगइन था जो अपराधी था, जिसमें स्प्रिंगफ्रामवर्क डॉट कॉम के अलावा एक आउटेज था। निम्नलिखित स्निपेट ने चीजों को साफ किया:

<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 किसी


उपरोक्त स्निपेट को कहां जोड़ना है?
कामिनी

4

आपको जांचना चाहिए कि क्लासपथ पर फाइलें spring.handlersऔर spring.schemasफाइलें हैं और सही सामग्री है।

इसके साथ किया जा सकता है ClassLoader.getResource(..)। आप रनटाइम वातावरण में दूरस्थ डीबगर के साथ विधि चला सकते हैं। एक्स्टेंसिबल एक्सएमएल संलेखन सेटअप को स्प्रिंग संदर्भ B.5 में वर्णित किया गया है हैंडलर और स्कीमा को पंजीकृत करना

आम तौर पर, फ़ाइलें स्प्रिंग जार (springframework.jar / META-INF /) में होनी चाहिए और जब वसंत शुरू किया जा सकता है तो क्लासपाथ पर।


1
नमस्ते, आपका समाधान बहुत जटिल है; मुझे समझ नहीं आ रहा है कि आपका क्या मतलब है? jroller.com/marshbourdon/entry/using_spring_2_x_xml , मैंने यह कोशिश की, लेकिन यह काम नहीं करता है। कोई सुझाव ? इंटरनेट कनेक्शन न होने पर वेबप काम करना जटिल नहीं हो सकता। क्या मैं सही हू ? धन्यवाद।
अल्टुग

1
वसंत को बॉक्स से बाहर काम करना चाहिए। आपके सहपाठी के साथ कुछ गलत है। मेरे उत्तर में आपकी समस्या का विश्लेषण करने के लिए केवल कुछ संकेत थे।
थॉमस जुंग

2

कक्षा पथ खोजें

यदि आप इसी जार फ़ाइल पर ग्रहण क्लिक का उपयोग कर रहे हैं। गोटो -> META-INF-> खुली हुई फ़ाइल spring.schemas

आपको नीचे कुछ पंक्तियाँ दिखाई देंगी।

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

बाद कॉपी करें = नीचे की तरह सेम को कॉन्फ़िगर करें।

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


मैंने यह परिवर्तन xml springframework.org/schema/rabbit classpath: org / springframework / amqp / rabbit / config / spring-rabbit-1.6.xsd में किया है, लेकिन यह कहता है कि स्कीमा दस्तावेज़ को पढ़ने में विफल रहा है: 'classpath: org / springframework / amqp' खरगोश / विन्यास / वसंत-खरगोश-1.6.xsd '? किसी भी सुझाव
ललित मेहरा

1

आपको अपनी बीन परिभाषा में स्कीमा स्थानों को जोड़ने की आवश्यकता है, और फिर उन्हें नेट पर लाने के बजाय क्लासपाथ में पाया जा सकता है। आपकी प्रारूपण समस्याओं को देखते हुए, मैं 100% सुनिश्चित नहीं हूं कि आप पहले से ऐसा नहीं कर रहे हैं।

<?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

हमने इस समस्या को हल किया:

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");

कृपया ध्यान दें कि हमारा आवेदन एक जावा स्टैंडअलोन ऑफ़लाइन ऐप है।


1

यदि आप अपने विकास के लिए ग्रहण का उपयोग कर रहे हैं, तो यदि आप ग्रहण के विशिष्ट संस्करण के लिए मार्केटप्लेस से ग्रहण के लिए एसटीएस प्लगइन स्थापित करने में मदद करते हैं।

अब जब आप प्रोजेक्ट के अंदर एक फ़ोल्डर (सामान्य रूप से संसाधन) में एक नई कॉन्फ़िगरेशन फ़ाइल बनाने का प्रयास करते हैं, तो विकल्पों में "स्प्रिंग फ़ोल्डर" होगा और आप "स्प्रिंग बीन डेफ़िनिशन फ़ाइल" विकल्प स्प्रिंग> स्प्रिंग बीन कॉन्फ़िगरेशन फ़ाइल चुन सकते हैं।

इस विकल्प के साथ, जब आप चरणों का पालन करते हैं, तो यह आपको नाम स्थान और विशिष्ट संस्करणों के लिए चयन करने के लिए कहता है:

और इसलिए एक गैर-मौजूद जार या पुराने संस्करण के होने की संभावना को समाप्त किया जा सकता है।

के रूप में अच्छी तरह से छवियों को पोस्ट किया होता, लेकिन मेरी प्रतिष्ठा बहुत कम है: ..(


1

समस्या JAR फ़ाइलों में है जो आप अपने अनुप्रयोग में उपयोग करते हैं।

मैंने जो किया, जो काम किया, वह SPRING-CORE, SPRING-BEANS, SPRING-CONTEXT, SPRING-TX के लिए JAR के अंदर जाना था जो मेरे द्वारा उपयोग किए जा रहे संस्करण से मेल खाता है। META-INF फ़ोल्डर के भीतर, मैंने उन सभी JARs में आने वाले सभी स्प्रिंग.हैंडलर और spring.schemas को एकत्र किया।

मैंने एक पत्थर से दो पक्षियों को मार डाला, मैंने स्कीमा की समस्या को हल किया ताकि यह ऑफ़लाइन मोड में भी सही ढंग से काम करे।

PS मैंने SHADE और ट्रांसफार्मर के लिए मावेन प्लगइन की कोशिश की लेकिन वह काम नहीं आया।


आपने इस समस्या को कैसे हल किया, क्या आप मुझे यह समझने में मदद कर सकते हैं। मुझे जरूरत है।
कामिनी

1

मुझे यह समस्या थी। पोस्टरिटी के लिए, मेरा अपवाद था:

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'

मैंने इसे हल किया जब मुझे एहसास हुआ कि spring-beansमेरे मावेन में निर्दिष्ट संस्करण pom.xmlथा 4.1.x, इस प्रकार विशिष्ट .xsdको क्लासपाथ पर नहीं पाया जा सकता है।

यह एक लंबे समय के लिए नकाबपोश था क्योंकि मैं सामान्य रूप से ऑनलाइन हूं, इसलिए मैंने सोचा कि ऑफ़लाइन होने के कारण बिल्ड "टूट" गया था। लेकिन इसका वास्तव में इससे कोई लेना-देना नहीं था। pom.xmlके सही संस्करण को निर्दिष्ट करने के लिए मेरा अद्यतन spring-beans, अर्थात् 4.2.x, इसे ठीक कर दिया।


1

मुझे एक ही समस्या थी जब मैं वसंत-संदर्भ संस्करण 4.0.6 और वसंत-सुरक्षा संस्करण 4.1.0 का उपयोग कर रहा हूं।

जब मेरे पोम और सुरक्षा xml -> स्कीमाक्वालेशन में 4.0.4 (क्योंकि वसंत-सुरक्षा उपलब्ध नहीं है) 4.0.4 में वसंत-सुरक्षा संस्करण बदलते हैं, तो यह इंटरनेट के बिना संकलित हो जाता है।

तो इसका मतलब है कि आप इसे भी हल कर सकते हैं:

  • वसंत-संदर्भ से वसंत-सुरक्षा को पुराने या उसी संस्करण में बदलना।

  • वसंत-सुरक्षा की तुलना में वसंत-संदर्भ को नए या उसी संस्करण में बदलना।

(किसी भी तरह से वसंत-संदर्भ वसंत-सुरक्षा के लिए नया या समान संस्करण हो)


0

मैं इस चर्चा के कुछ अतिरिक्त पहलू जोड़ना चाहूंगा। विंडोज़ ओएस में मैंने देखा है कि जब स्कीमा युक्त जार फ़ाइल को एक निर्देशिका में संग्रहीत किया जाता है जिसका पथ में एक अंतरिक्ष वर्ण होता है, उदाहरण के लिए निम्न उदाहरण में

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

तब निम्न तरीके से स्कीमा स्थान URL निर्दिष्ट करना पर्याप्त नहीं है जब आप कुछ स्टैंडअलोन एप्लिकेशन विकसित कर रहे हों जो ऑफ़लाइन भी काम करें

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

मैंने सीखा है कि इस तरह के स्कीमा स्थान URL रिज़ॉल्यूशन का परिणाम एक फ़ाइल है जिसमें निम्नलिखित की तरह एक पथ है

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

जब मैंने अपना आवेदन कुछ अन्य निर्देशिका से शुरू किया, जिसमें इसके पथ पर स्थान वर्ण नहीं था तो स्कीमा स्थान रिज़ॉल्यूशन ने ठीक काम किया। शायद किसी को भी इसी तरह की समस्याओं का सामना करना पड़ा? फिर भी मुझे पता है कि क्लासपैथ प्रोटोकॉल मेरे मामले में ठीक काम करता है

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

0

मैं इसी तरह की समस्या में भाग गया था। मेरे मामले में, मेरा संकल्प काफी अलग है। यहाँ मेरा स्प्रिंग संदर्भ xml फ़ाइल है:

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

मैं किसी भी xsd संस्करण को निर्दिष्ट नहीं कर रहा हूं क्योंकि मैं चाहता हूं कि वसंत वसंत निर्भरता के अंदर नवीनतम xsd संस्करण का उपयोग करें। मेरे द्वारा उपयोग किया गया स्प्रिंग संस्करण स्प्रिंग-बीन्स-4.3.1.RELEASE.jar: 4.3.1 था। कृपया और जब मैं जार में अपने एप्लिकेशन को असेंबली करता हूं, तो सभी स्प्रिंग निर्भरताएं मेरे क्लासपाथ में मौजूद होती हैं। हालाँकि, मुझे अपने स्प्रिंग एप्लिकेशन संदर्भ के स्टार्टअप के दौरान निम्नलिखित त्रुटि मिली:

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

कुछ कठिन समय समस्या निवारण के बाद, मैंने पाया कि समस्या मेरी जार फ़ाइल के META-INF फ़ोल्डर के अंदर index.list के कारण है । Index.list फ़ाइल के साथ , स्प्रिंग नेमस्पेस संचालकों को सही ढंग से स्प्रिंग एप्लिकेशन संदर्भ xml पार्स करने के लिए स्थित नहीं किया जा सकता है। आप इस वसंत अंक SPR-5705 के बारे में अधिक पढ़ सकते हैं

अपने मावेन-जार-प्लगइन से अनुक्रमण को हटाकर , मैं समस्या को हल करने का प्रबंधन करता हूं। उम्मीद है कि यह वही समस्या वाले लोगों के लिए कुछ समय बचाएगा।


0

बस सुनिश्चित करें कि संबंधित स्प्रिंग जार फ़ाइल आपके रनटाइम क्लासपाथ में है। मेरे मामले में यह रनटाइम क्लासपाथ से वसंत-टीएक्स-4.3.4.RELEASE.jar गायब था। इस जार को जोड़ने के बाद, समस्या हल हो गई थी।


0

यदि आपके प्लेटफ़ॉर्म में कोई इंटरनेट कनेक्शन नहीं है और आप ग्रहण का उपयोग करते हैं, तो इन चरणों का पालन करें (यह मेरी समस्या हल करता है)

  1. सटीक xsd फ़ाइलें ढूंढें (आप इन फ़ाइलों को उनके जार से खोल सकते हैं। उदाहरण के लिए, spring-beans-xyxsd को spring-beans-xyzRELEASE.jar)
  2. एक्सएमएल कैटलॉग ग्रहण करने के लिए इन xsd फ़ाइलों को जोड़ें। (प्राथमिकताएं-> XML-> XML कैटलॉग, फाइलें जोड़ें)
  3. इन फ़ाइलों को कॉन्फ़िगरेशन फ़ाइल में स्थान जोड़ें। (सावधान रहें, फ़ाइल का सटीक संस्करण लिखें)

उदाहरण:

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


-1

हाल ही में आपके द्वारा जोड़े गए जार को वेब-इन्फ़ -> लिबास में निकालें। उदाहरण के लिए jstl जार।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.