Saya menggunakan Spring dan application-context.xml
saya memiliki definisi berikut:
<?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"
>
.....
Ketika koneksi internet saya terputus, saya tidak dapat menjalankan aplikasi saya melalui tomcat atau jetty.
Memberikan:
[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........
Ada saran bagaimana memperbaikinya?
Saya menyelesaikannya
classpath:spring-context-2.1.xsd
adalah kunci untuk bekerja dalam mode offline (tidak ada koneksi internet). Juga saya menyalin dispring-context-2.1.xsd
dekat (direktori yang sama) file application-context.xmlsumber
Sesuatu seperti ini berhasil untuk saya.
sumber
Jika ada yang datang ke sini melalui root yang sama dengan yang saya lakukan - saya mengalami masalah ini karena saya sedang membangun satu JAR dengan semua dependensi, termasuk Spring JAR. Akibatnya file spring.schemas di beberapa META-INF direktori pada Spring JAR telah ditimpa.
Saya menemukan solusi yang disarankan di sini: Bagaimana cara membuat jar yang dapat dieksekusi berbasis pegas dengan maven?
sumber
Mengalami masalah serupa hari ini. Dalam kasus saya, itu adalah plugin shade yang menjadi penyebabnya, selain springframework.org mengalami gangguan. Cuplikan berikut menyelesaikan semuanya:
HTH seseorang
sumber
Anda harus memeriksa bahwa file
spring.handlers
danspring.schemas
ada di classpath dan memiliki konten yang benar.Ini bisa dilakukan dengan
ClassLoader.getResource(..)
. Anda dapat menjalankan metode dengan debugger jarak jauh di lingkungan waktu proses. Setup authoring XML yang dapat diperluas dijelaskan di Spring Reference B.5. Mendaftarkan penangan dan skema .Biasanya, file harus berada di jar pegas (springframework.jar / META-INF /) dan di jalur kelas saat Spring dapat dimulai.
sumber
Temukan jalur kelas
Jika Anda menggunakan eclipse klik pada file jar yang sesuai. Goto -> META-INF-> buka file spring.schemas
Anda akan melihat garis seperti di bawah ini.
http://www.springframework.org/schema/context/spring-context.xsd=org/springframework/context/config/spring-context-3.1.xsd
salin setelah = dan konfigurasikan kacang seperti di bawah ini.
<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">
sumber
Anda perlu menambahkan lokasi skema ke definisi kacang Anda, dan kemudian lokasi tersebut dapat ditemukan di classpath daripada diambil melalui internet. Mengingat masalah pemformatan Anda, saya tidak 100% yakin bahwa Anda belum melakukan ini.
sumber
Kami memecahkan masalah dengan melakukan ini:
Harap dicatat bahwa aplikasi kami adalah aplikasi offline mandiri Java.
sumber
Jika Anda menggunakan eclipse untuk pengembangan Anda, ada baiknya jika Anda menginstal plugin STS untuk Eclipse [dari marketPlace untuk versi eclipse tertentu.
Sekarang Ketika Anda mencoba untuk membuat file konfigurasi baru dalam sebuah folder (biasanya sumber daya) di dalam proyek, opsi akan memiliki "Folder Musim Semi" dan Anda dapat memilih opsi "File Definisi Musim Semi Bean" Spring> Spring Bean Configuation File.
Dengan memilih opsi ini, saat Anda mengikuti langkah-langkahnya, ia meminta Anda untuk memilih ruang nama dan versi tertentu:
Sehingga kemungkinan memiliki toples yang tidak ada atau versi lama dapat dihilangkan.
Akan memposting gambar juga, tetapi reputasi saya cukup rendah .. :(
sumber
Masalahnya terletak pada file JAR yang Anda gunakan dalam aplikasi Anda.
Apa yang saya lakukan, yang berhasil, adalah masuk ke dalam JAR untuk SPRING-CORE, SPRING-BEANS, SPRING-CONTEXT, SPRING-TX yang sesuai dengan versi yang saya gunakan. Di dalam folder META-INF, saya menggabungkan semua spring.handlers dan spring.schemas yang ada di JAR tersebut.
Saya membunuh dua burung dengan satu batu, saya memecahkan masalah skema sehingga ini juga berfungsi dengan benar dalam mode offline.
PS Saya mencoba plugin maven untuk SHADE dan transformer tetapi itu tidak berhasil.
sumber
Saya punya masalah ini. Untuk anak cucu, pengecualian saya adalah:
Saya menyelesaikannya ketika saya menyadari versi yang
spring-beans
ditentukan di Maven sayapom.xml
adalah4.1.x
, dengan demikian berarti spesifik.xsd
tidak dapat ditemukan di jalur kelas.Ini sudah lama ditutup karena saya biasanya online, jadi saya pikir offline telah "merusak" buildnya. Tapi itu benar-benar tidak ada hubungannya dengan itu. Memperbarui saya
pom.xml
untuk menentukan versi yang benarspring-beans
, yaitu4.2.x
, memperbaikinya.sumber
Saya mengalami masalah yang sama saat menggunakan versi konteks pegas 4.0.6 dan keamanan pegas versi 4.1.0.
Saat mengubah versi keamanan pegas ke 4.0.4 (karena 4.0.6 keamanan pegas tidak tersedia) di pom saya dan keamanan xml -> schemaLocation, ia akan dikompilasi tanpa internet.
Jadi itu berarti Anda juga bisa menyelesaikannya dengan:
mengubah keamanan pegas ke versi yang lebih lama atau sama dari konteks pegas.
mengubah konteks pegas ke versi yang lebih baru atau sama dengan keamanan pegas.
(dengan cara apa pun konteks pegas menjadi lebih baru atau versi yang sama dengan keamanan pegas)
sumber
Saya ingin menambahkan beberapa aspek tambahan dari diskusi ini. Di OS windows saya telah mengamati bahwa ketika file jar yang berisi skema disimpan dalam direktori yang jalurnya berisi karakter spasi, misalnya seperti pada contoh berikut
maka menentukan URL lokasi skema dengan cara berikut tidak cukup saat Anda mengembangkan beberapa aplikasi mandiri yang juga berfungsi secara offline
Saya telah belajar bahwa hasil dari resolusi URL lokasi skema tersebut adalah file yang memiliki jalur seperti berikut
Ketika saya memulai aplikasi saya dari beberapa direktori lain yang tidak berisi karakter spasi di jalurnya, resolusi lokasi skema berfungsi dengan baik. Mungkin seseorang menghadapi masalah serupa? Namun demikian saya menemukan bahwa protokol classpath berfungsi dengan baik dalam kasus saya
sumber
Saya juga mengalami masalah serupa ini. Dalam kasus saya, resolusi saya sangat berbeda. Ini file xml konteks pegas saya:
Saya tidak menentukan versi xsd apa pun karena saya ingin spring menggunakan versi xsd terbaru di dalam dependensi spring. Versi pegas yang digunakan aplikasi saya adalah spring-beans-4.3.1.RELEASE.jar: 4.3.1.RELEASE dan ketika saya memasang aplikasi saya ke dalam jar, semua dependensi pegas ada di classpath saya. Namun, saya menerima kesalahan berikut selama permulaan konteks aplikasi musim semi saya:
Setelah beberapa lama memecahkan masalah, saya menemukan masalahnya disebabkan oleh index.list di dalam folder META-INF dari file jar saya. Dengan file index.list , penangan namespace pegas tidak dapat ditemukan untuk mengurai xml konteks aplikasi pegas dengan benar. Anda dapat membaca lebih lanjut tentang edisi musim semi ini SPR-5705
Dengan menghapus pengindeksan dari maven-jar-plugin saya, saya berhasil menyelesaikan masalah. Semoga ini akan menghemat waktu bagi orang yang memiliki masalah yang sama.
sumber
Pastikan saja file spring jar yang relevan ada di classpath waktu proses Anda. Dalam kasus saya ini, kami kehilangan spring-tx-4.3.4.RELEASE.jar dari runtime classpath. Setelah menambahkan toples ini, masalahnya teratasi.
sumber
Jika tidak ada koneksi internet di platform Anda dan Anda menggunakan Eclipse, ikuti langkah-langkah ini (ini menyelesaikan masalah saya)
Contoh:
sumber
Hapus toples yang Anda tambahkan baru-baru ini di web-inf -> lib. misalnya toples jstl.
sumber