Spring schemaLocation, internet bağlantısı olmadığında başarısız oluyor


107

Spring kullanıyorum ve application-context.xmlaşağıdaki tanımlarım var:

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

.....

İnternet bağlantım koptuğunda uygulamamı tomcat veya iskele üzerinden çalıştıramıyorum.

O verir:

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

Nasıl düzeltileceğine dair herhangi bir öneriniz var mı?

Yanıtlar:


115

Ad alanı doğru yapılandırıldıysa ve XSD dosyası sınıf yolunuzdaysa, schemaLocation URL'nizde classpath: protocol'ü kullanmaya gerek yoktur.

Spring doc " İşleyiciyi ve şemayı kaydettirme ", bunun nasıl yapılması gerektiğini gösterir.

Sizin durumunuzda, problem muhtemelen sınıf yolunuzdaki yay bağlamı kavanozunun 2.1 olmamasıydı. Protokolün sınıf yoluna değiştirilmesinin ve sınıf yolunuza belirli 2.1 XSD'nin yerleştirilmesinin sorunu çözmesinin nedeni buydu.

Gördüğüm kadarıyla, bir spring- * kavanozunda bulunan ana XSD için tanımlanmış 2 şema var. Bir kez şema URL'sini sürümle ve bir kez onsuz çözmek için.

Örnek olarak spring.schemas içeriğinin bu bölümünü spring-context-3.0.5.RELEASE.jar'da görebilirsiniz:

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

Bunun anlamı (xsi: schemaLocation)

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

karşı doğrulanacak

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

sınıf yolunda.

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

veya

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

karşı doğrulanacak

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

sınıf yolunda.

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

tanımlanmadığı için Spring, schemaLocation'da tanımlanan değişmez URL'yi kullanarak arayacaktır.


37
Özete ihtiyaç duyanlar için: Bahar, sınıf yolunda şemaları bulamıyor. Spring core JAR, JAR'da bulunan bir şema-> dosya adı eşlemesine sahiptir. Bunu çözemezse web'e gidecektir.
Alex

Bunu "http:////www.springframework.org/schema/context http: ///www.springframework.org/schema/context/spring-context-4.0.xsd" gibi ilan ettim. Glassfish / domains / domain1 / lib içinde 4.0 kavanozum var. Projeyi ne zaman konuşlandırsam, cam balığı interneti ifade ediyor. Bu sorun, cam balığı-4.0'a mı özgü? (biçimlendirme için daha fazla '/' eklendi)
Pragalathan M

Yeni "İşleyiciyi ve şemayı kaydettirme" bağlantısının burada olması gerektiğini düşünüyorum: docs.spring.io/spring/docs/current/spring-framework-reference/…
Dirk

1
@Dirk - bu bağlantı bozuk görünüyor
Stormcloud

2
@Stormcloud, evet, orijinal bağlantı geri geldi ve önerdiğim bağlantı bozuk. İşte en son belge bağlantısı: docs.spring.io/spring/docs/current/spring-framework-reference/…
Dirk

28

Ben çözdüm

<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çevrimdışı modda çalışmanın anahtarıdır (internet bağlantısı yok). Ayrıca spring-context-2.1.xsd(aynı dizin) application-context.xml dosyasının yakınına kopyaladım


6
Bununla karşılaşabilecek intellij kullanıcıları için. Bu, intellij, schemalLocation içindeki sınıf yolu sözdizimini tanımasa ve bunu bir hata olarak vurgulasa bile çalışır.
Upgradingdave

Çok teşekkür ederim @DaveParoulek - hata beni başından savıyordu ama bu kesinlikle işe yarıyor.
Zach Johnson

18

Bunun gibi bir şey benim için çalıştı.

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
Evet, bu işe yarıyor çünkü xsd yay kavanozunun içinde paketlenmiş. Bu yüzden, kavanozun içindeki xsd'yi kullanabildiğiniz zaman springframework.com'u kontrol etmenize gerek yok :)
Somaiah Kumbera

Bu çözüm benim için işe yaradı, çünkü bir kavanozun içinde yay bağımlılıkları vardı, yani harici bir kavanoz olarak ve internet arızası olmadan çözümünüz benim için çok iyi çalıştı, çok teşekkürler Tanrı korusun.
chiperortiz

@godlikeNoob Bunu denedim ama yine hata veriyor "cvc-elt.1: 'fasulye' öğesinin bildirimini bulamıyor."
Kamini

6

Birinin buraya benim yaptığım aynı kök yoluyla gelmesi durumunda - bu soruna çarptım çünkü Spring JAR'lar dahil tüm bağımlılıkları olan tek bir JAR oluşturuyordum. Sonuç olarak Spring JAR'ların bazı META-INF dizinlerinde spring.schemas dosyasının üzerine yazıldı.

Burada önerilen çözümleri buldum: Maven ile yay tabanlı çalıştırılabilir jar nasıl oluşturulur?


5

Bugün benzer bir sorunla karşılaştı. Benim durumumda, springframework.org'un kesintiye uğramasına ek olarak, suçlu olan gölge eklentisiydi. Aşağıdaki kod parçası her şeyi açıklığa kavuşturdu:

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


yukarıdaki ön bilginin nereye eklenmesi gerekiyor?
Kamini

4

Kontrol etmelisiniz ki spring.handlersvespring.schemas dosyalarının sınıf yolunda olup olmadığını ve doğru içeriğe sahip .

Bu ile yapılabilir ClassLoader.getResource(..). Yöntemi , çalışma zamanı ortamında uzak hata ayıklayıcıyla çalıştırabilirsiniz. Genişletilebilir XML yazma kurulumu, Bahar Referansı B.5'te açıklanmaktadır. İşleyiciyi ve şemayı kaydetme .

Normalde, dosyalar yay kavanozunda (springframework.jar / META-INF /) ve Bahar başlatıldığında sınıf yolunda olmalıdır.


1
merhaba, çözümünüz çok karmaşık; ne demek istiyorsun anlamadım jroller.com/marshbourdon/entry/using_spring_2_x_xml , bunu denedim ama çalışmıyor. Baska öneri ? İnternet bağlantısı yokken bir web uygulamasını çalıştırmak karmaşık olamaz. haklı mıyım Teşekkürler.
Altug

1
Bahar kutunun dışında çalışmalı. Sınıf yolunuzla ilgili bir şey yanlış. Cevabım sadece probleminizi analiz etmek için bazı ipuçları içeriyordu.
Thomas Jung

2

Sınıf yolunu bul

Tutulma kullanıyorsanız, ilgili jar dosyasına tıklayın. Goto -> META-INF-> açık dosya spring.schemas

Çizgileri aşağıdaki gibi göreceksiniz.

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

sonra kopyala = ve fasulyeleri aşağıdaki gibi yapılandırın.

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


Bu değişikliği xml springframework.org/schema/rabbit sınıf yolunda yaptım : org / springframework / amqp / rabbit / config / spring-rabbit-1.6.xsd ancak şema belgesi 'classpath: org / springframework / amqp / okunamadı' yazıyor rabbit / config / spring-rabbit-1.6.xsd '? herhangi bir öneri
Lalit Mehra

1

Bean tanımınıza şema konumları eklemeniz gerekir ve bunlar ağ üzerinden getirilmek yerine sınıf yolunda bulunabilir. Biçimlendirme problemleriniz göz önüne alındığında, bunu zaten yapmadığınızdan% 100 emin değilim.

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

Bunu yaparak sorunu çözdük:

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

Lütfen uygulamamızın Java bağımsız bir çevrimdışı uygulama olduğunu unutmayın.


1

Geliştirmeniz için eclipse kullanıyorsanız, Eclipse için STS eklentisini [eclipse'in belirli sürümü için marketPlace'den yüklerseniz yardımcı olur.

Şimdi, projenin içindeki bir klasörde (normalde kaynaklarda) yeni bir yapılandırma dosyası oluşturmaya çalıştığınızda, seçenekler bir "Yay Klasörü" içerecektir ve bir "Bahar Fasulyesi Tanımlama Dosyası" seçeneğini Bahar> Bahar Fasulyesi Yapılandırma Dosyası seçebilirsiniz.

Bu seçenek seçildiğinde, adımları izlediğinizde ad alanlarını ve belirli sürümleri seçmenizi ister:

Ve böylece var olmayan bir kavanoz veya eski bir versiyona sahip olma olasılığı ortadan kaldırılabilir.

Resimler de gönderirdim, ancak itibarım oldukça düşük .. :(


1

Sorun, uygulamanızda kullandığınız JAR dosyalarında yatmaktadır.

İşe yarayan şey, kullandığım sürümle eşleşen SPRING-CORE, SPRING-BEANS, SPRING-CONTEXT, SPRING-TX için JAR'ların içine girmekti. META-INF klasörü içinde, bu JAR'larda gelen tüm spring.handlers ve spring.schemas'leri birleştirdim.

Bir taşla iki kuş öldürdüm, şemaların sorununu çözdüm, böylece bu çevrimdışı modda da doğru çalışıyor.

Not: SHADE ve transformatörler için maven eklentisini denedim ama bu işe yaramadı.


Bu sorunu nasıl çözdünüz, lütfen anlamama yardım eder misiniz? İhtiyacım var
Kamini

1

Bu sorunu yaşadım. Gelecek nesil için istisnam şuydu:

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-beansMaven'imde belirtilen sürümün olduğunu fark ettiğimde çözdüm pom.xml, 4.1.xyani belirli bir .xsdsınıf yolunda bulunamadı.

Bu uzun bir süre maskelenmişti çünkü normalde çevrimiçiyim, bu yüzden çevrimdışı olmanın yapıyı "bozduğunu" düşündüm. Ama bununla hiçbir ilgisi yoktu. My'ın pom.xmldoğru sürümünü belirtmek için güncellenmesi spring-beans, yani 4.2.xdüzeltildi.


1

Yay bağlamı sürüm 4.0.6 ve yay güvenliği sürüm 4.1.0 kullanırken de aynı sorunu yaşadım.

Benim pom ve güvenlik xml -> schemaLocation'da yay güvenliği sürümünü 4.0.4'e değiştirirken (çünkü yay güvenliğinin 4.0.6'sı mevcut değil), internet olmadan derleniyor.

Bu, bunu şu şekilde de çözebileceğiniz anlamına gelir:

  • yay güvenliğinin yay bağlamından daha eski veya aynı bir sürüme değiştirilmesi.

  • yay bağlamını yay güvenliğinden daha yeni veya aynı sürüme değiştirmek.

(herhangi bir şekilde yay bağlamı daha yeni veya yay güvenliği için aynı sürüm)


0

Bu tartışmanın bazı ek yönlerini eklemek istiyorum. Windows işletim sisteminde, şema içeren bir jar dosyasının yolu boşluk karakteri içeren bir dizinde depolandığında, örneğin aşağıdaki örnekte olduğu gibi gözlemledim.

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

bu durumda şema konumu URL'sini aşağıdaki şekilde belirtmek, çevrimdışı da çalışması gereken bazı bağımsız uygulamalar geliştirirken yeterli değildir

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

Böyle bir şema konumu URL çözümlemesinin sonucunun aşağıdaki gibi bir yola sahip bir dosya olduğunu öğrendim

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

Uygulamamı, yolunda boşluk karakteri içermeyen başka bir dizinden başlattığımda, şema konumu çözünürlüğü iyi çalıştı. Belki birileri benzer sorunlarla karşılaştı? Yine de benim durumumda sınıf yolu protokolünün iyi çalıştığını keşfettim

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

0

Ben de bu benzer problemle karşılaşmıştım. Benim durumumda kararım oldukça farklı. İşte benim bahar bağlamı xml dosyam:

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

Spring'in yay bağımlılıkları içinde en son xsd sürümünü kullanmasını istediğim için herhangi bir xsd sürümü belirtmiyorum. Uygulamamın kullandığı ilkbahar sürümü, spring -bean-4.3.1.RELEASE.jar: 4.3.1.RELEASE idi ve uygulamamı jar'e birleştirdiğimde, tüm yay bağımlılıkları sınıf yolumda mevcut. Ancak, bahar uygulaması içeriğimin başlatılması sırasında aşağıdaki hatayı aldım:

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

Bazı sorun giderme işlemlerinden sonra, sorunun jar dosyamın META-INF klasöründeki index.list'ten kaynaklandığını buldum . İle index.list dosyası, bahar ad işleyicileri doğru yay uygulama bağlamı xml ayrıştırmak için yer edilemez. Bu bahar sayısı hakkında daha fazla bilgi edinebilirsiniz SPR-5705

Maven-jar-eklentimden indekslemeyi kaldırarak sorunu çözmeyi başardım. Umarım bu, aynı sorunu yaşayan insanlara zaman kazandırır.


0

Sadece ilgili yaylı jar dosyasının çalışma zamanı sınıf yolunuzda olduğundan emin olun. Benim durumumda bu, çalışma zamanı sınıf yolunda spring-tx-4.3.4.RELEASE.jar'ı kaçırıyorduk. Bu kavanozu ekledikten sonra sorun çözüldü.


0

Platformunuzda internet bağlantısı yoksa ve Eclipse kullanıyorsanız şu adımları izleyin (bu benim sorunumu çözer)

  1. Tam xsd dosyalarını bulun (Bu dosyaları kavanozlarından açabilirsiniz. Örneğin, bahar-fasulye-xyzRELEASE.jar içindeki bahar-fasulye-xyxsd)
  2. Bu xsd dosyalarını Eclipse XML Kataloğuna ekleyin. (Tercihler-> XML-> XML Kataloğu, Dosya Ekle)
  3. Bu dosyaların konumunu yapılandırma dosyasına ekleyin. (Dikkatli olun, dosyanın tam sürümünü yazın)

Misal:

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


-1

Son zamanlarda web-inf -> lib'de eklediğiniz kavanozları kaldırın. örneğin jstl kavanozları.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.