Я использую Spring, и у 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"
>
.....
Когда мое интернет-соединение потеряно, я не могу запустить свое приложение через tomcat или причал.
Это дает:
[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........
Есть предложения, как это исправить?
Я решил это
classpath:spring-context-2.1.xsd
это ключ для работы в автономном режиме (без подключения к Интернету). Также я скопировалspring-context-2.1.xsd
рядом (в том же каталоге) файл application-context.xmlисточник
Что-то вроде этого у меня сработало.
источник
На случай, если кто-то придет сюда через тот же корень, что и я, - я столкнулся с этой проблемой, потому что я создавал один JAR со всеми зависимостями, включая Spring JAR. В результате файл spring.schemas в некоторых каталогах META-INF файлов Spring JAR был перезаписан.
Я нашел здесь предлагаемые решения: как создать исполняемую jar на основе Spring с помощью maven?
источник
Сегодня столкнулся с подобной проблемой. В моем случае виновником был плагин shade, а также сбой на springframework.org. Следующий фрагмент прояснил ситуацию:
HTH кто-то
источник
Вы должны проверить , что
spring.handlers
иspring.schemas
файлы находятся на пути к классам и имеют право содержания.Это можно сделать с помощью
ClassLoader.getResource(..)
. Вы можете запустить метод с помощью удаленного отладчика в среде выполнения. Настройка расширяемой разработки XML описана в Spring Reference B.5. Регистрация обработчика и схемы .Обычно файлы должны находиться в банке Spring (springframework.jar / META-INF /) и в пути к классам, когда Spring может быть запущен.
источник
Найти путь к классу
Если вы используете eclipse, щелкните соответствующий файл jar. Перейти -> META-INF-> открыть файл spring.schemas
вы увидите строки примерно так, как показано ниже.
http://www.springframework.org/schema/context/spring-context.xsd=org/springframework/context/config/spring-context-3.1.xsd
скопируйте after = и настройте beans как показано ниже.
<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">
источник
Вам нужно добавить расположение схемы в определение вашего bean-компонента, и тогда их можно будет найти в пути к классам, а не получить по сети. Учитывая ваши проблемы с форматированием, я не уверен на 100%, что вы этого еще не делаете.
источник
Мы решили проблему следующим образом:
Обратите внимание, что наше приложение является автономным автономным Java-приложением.
источник
Если вы используете eclipse для своей разработки, вам поможет установка плагина STS для Eclipse [из marketPlace для конкретной версии eclipse.
Теперь, когда вы пытаетесь создать новый файл конфигурации в папке (обычно это ресурсы) внутри проекта, параметры будут иметь «Папку Spring», и вы можете выбрать параметр «Spring Bean Definition File» Spring> Spring Bean Configuation File.
Если выбран этот параметр, при выполнении шагов вам будет предложено выбрать пространства имен и конкретные версии:
Таким образом можно исключить возможность наличия несуществующей jar или старой версии.
Я бы тоже выложил изображения, но моя репутация довольно низкая .. :(
источник
Проблема заключается в файлах JAR, которые вы используете в своем приложении.
Что я сделал, и это сработало, так это залезть внутрь JAR для SPRING-CORE, SPRING-BEANS, SPRING-CONTEXT, SPRING-TX, которые соответствуют версии, которую я использую. В папке META-INF я объединил все spring.handlers и spring.schemas, которые входят в эти JAR.
Я убил двух зайцев одним выстрелом, решил проблему схем, так что это тоже корректно работает в автономном режиме.
PS Я попробовал плагин maven для SHADE и трансформаторов, но это не сработало.
источник
У меня была такая проблема. Для потомков моим исключением были:
Я решил это, когда понял версию,
spring-beans
указанную в моем Mavenpom.xml
была4.1.x
, что означает, что конкретная.xsd
не может быть найдена в пути к классам.Это долгое время маскировалось, потому что я обычно нахожусь в сети, поэтому я подумал, что отключение «сломало» сборку. Но на самом деле это не имело никакого отношения к этому. Обновление моей
pom.xml
для указания правильной версииspring-beans
, а именно4.2.x
исправлено.источник
У меня была такая же проблема, когда я использовал Spring-context версии 4.0.6 и spring-security версии 4.1.0.
При изменении версии spring -security на 4.0.4 (поскольку 4.0.6 Spring-security недоступна) в моем pom и security xml -> schemaLocation, она компилируется без Интернета.
Это означает, что вы также можете решить эту проблему:
изменение spring -security на более старую или ту же версию, чем spring-context.
изменение spring-context на более новую или ту же версию, чем spring-security.
(в любом случае spring-context должен быть более новым или той же версии, что и spring-security)
источник
Я хотел бы добавить к этому обсуждению еще один аспект. В ОС Windows я заметил, что когда файл jar, содержащий схему, хранится в каталоге, путь которого содержит символ пробела, например, как в следующем примере
тогда указания URL-адреса расположения схемы следующим образом недостаточно, если вы разрабатываете какое-то отдельное приложение, которое также должно работать в автономном режиме
Я узнал, что результатом такого разрешения URL-адреса расположения схемы является файл, который имеет путь, подобный следующему
Когда я запустил свое приложение из другого каталога, который не содержал пробела на своем пути, разрешение местоположения схемы работало нормально. Может кто сталкивался с подобными проблемами? Тем не менее я обнаружил, что протокол пути к классам отлично работает в моем случае
источник
Я тоже столкнулся с этой похожей проблемой. В моем случае разрешение совсем другое. Вот мой XML-файл весеннего контекста:
Я не указываю версию xsd, поскольку хочу, чтобы Spring использовала последнюю версию xsd внутри зависимостей Spring. Версия spring, которую использовало мое приложение, была spring-beans-4.3.1.RELEASE.jar: 4.3.1.RELEASE, и когда я собираю свое приложение в jar, все зависимости Spring существуют в моем пути к классам. Однако при запуске контекста приложения Spring я получил следующую ошибку:
После трудного устранения неполадок я обнаружил, что проблема связана с index.list внутри папки META-INF моего файла jar. С файлом index.list обработчики пространств имен Spring не могут быть обнаружены для правильного анализа XML-контекста приложения Spring. Подробнее об этом весеннем выпуске SPR-5705 читайте.
Удалив индексирование из моего maven-jar-plugin , мне удалось решить проблему. Надеюсь, это сэкономит время людям, имеющим такую же проблему.
источник
Просто убедитесь, что соответствующий файл spring jar находится в пути к классам среды выполнения. В моем случае нам не хватало spring-tx-4.3.4.RELEASE.jar из пути к классам времени выполнения. После добавления этой банки проблема была решена.
источник
Если на вашей платформе нет подключения к Интернету и вы используете Eclipse, выполните следующие действия (это решает мою проблему)
Пример:
источник
Удалите jar-файлы, которые вы недавно добавили в web-inf -> lib. например jstl jars.
источник