Estou usando o Spring e application-context.xml
tenho as seguintes definições:
<?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"
>
.....
Quando minha conexão com a Internet é perdida, não consigo executar meu aplicativo via Tomcat ou Jetty.
Dá:
[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........
Alguma sugestão de como consertar isso?
Eu resolvi isso
classpath:spring-context-2.1.xsd
é a chave para trabalhar no modo offline (sem conexão com a Internet). Também copieispring-context-2.1.xsd
próximo ao (mesmo diretório) o arquivo application-context.xmlfonte
Algo assim funcionou para mim.
fonte
Caso alguém chegue aqui através da mesma raiz que eu - encontrei este problema porque estava construindo um único JAR com todas as dependências, incluindo Spring JARs. Como resultado, o arquivo spring.schemas em alguns dos diretórios META-INF de Spring JARs foi sobrescrito.
Encontrei soluções sugeridas aqui: Como criar um jar executável baseado em spring com o maven?
fonte
Tive um problema semelhante hoje. No meu caso, foi o plugin de sombra o culpado, além de springframework.org ter uma falha. O seguinte snippet esclareceu as coisas:
HTH alguém
fonte
Você deve verificar se os arquivos
spring.handlers
espring.schemas
estão no caminho de classe e se têm o conteúdo correto.Isso pode ser feito com
ClassLoader.getResource(..)
. Você pode executar o método com um depurador remoto no ambiente de tempo de execução. A configuração de criação XML extensível é descrita em Spring Reference B.5. Registrando o manipulador e o esquema .Normalmente, os arquivos devem estar no jar do spring (springframework.jar / META-INF /) e no classpath quando o Spring pode ser iniciado.
fonte
Encontre o caminho da aula
Se você estiver usando o eclipse, clique no arquivo jar correspondente. Vá para -> META-INF-> abrir o arquivo spring.schemas
você verá as linhas mais ou menos como abaixo.
http://www.springframework.org/schema/context/spring-context.xsd=org/springframework/context/config/spring-context-3.1.xsd
copie após = e configure os beans como a seguir.
<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">
fonte
Você precisa adicionar localizações de esquema à sua definição de bean, e então eles podem ser encontrados no classpath em vez de buscados pela rede. Dados seus problemas de formatação, não tenho 100% de certeza de que você ainda não está fazendo isso.
fonte
Resolvemos o problema fazendo isso:
Observe que nosso aplicativo é um aplicativo off-line independente Java.
fonte
Se você estiver usando o eclipse para seu desenvolvimento, será útil instalar o plugin STS para Eclipse [do marketPlace para a versão específica do eclipse.
Agora, quando você tenta criar um novo arquivo de configuração em uma pasta (normalmente recursos) dentro do projeto, as opções seriam uma "Pasta Spring" e você pode escolher uma opção "Arquivo de definição do Spring Bean" Spring> Arquivo de configuração do Spring Bean.
Com essa opção selecionada, ao seguir as etapas, ele pede que você selecione os namespaces e as versões específicas:
E assim a possibilidade de ter um jar ou versão antiga inexistente pode ser eliminada.
Também teria postado imagens, mas minha reputação é muito baixa .. :(
fonte
O problema está nos arquivos JAR usados em seu aplicativo.
O que eu fiz, que funcionou, foi entrar nos JARs para SPRING-CORE, SPRING-BEANS, SPRING-CONTEXT, SPRING-TX que combinam com a versão que estou usando. Dentro da pasta META-INF, concatenei todos os spring.handlers e spring.schemas que vêm nesses JARs.
Matei dois coelhos com uma cajadada só, resolvi o problema dos esquemas para que funcione corretamente no modo offline.
PS Eu tentei o plugin maven para SHADE e os transformadores, mas não funcionou.
fonte
Eu tive esse problema. Para a posteridade, minha exceção foi:
Eu resolvi isso quando percebi que a versão do
spring-beans
especificado em meu Mavenpom.xml
era4.1.x
, o que significa que o específico.xsd
não pôde ser encontrado no caminho de classe.Isso foi mascarado por um longo tempo porque normalmente estou online, então pensei que estar offline tinha "quebrado" a compilação. Mas realmente não teve nada a ver com isso. Atualizar o meu
pom.xml
para especificar a versão correta dospring-beans
, ou seja4.2.x
, corrigi- lo.fonte
Tive o mesmo problema ao usar o spring-context versão 4.0.6 e o spring-security versão 4.1.0.
Ao alterar a versão do spring-security para 4.0.4 (porque 4.0.6 do spring-security não está disponível) em meu pom e security xml -> schemaLocation, ele é compilado sem internet.
Isso significa que você também pode resolver isso:
alterando spring-security para uma versão mais antiga ou igual à do spring-context.
alterando spring-context para uma versão mais recente ou igual à do spring-security.
(qualquer forma de spring-context ser mais recente ou a mesma versão do spring-security)
fonte
Eu gostaria de acrescentar algum aspecto adicional a essa discussão. No sistema operacional Windows, observei que quando um arquivo jar contendo um esquema é armazenado em um diretório cujo caminho contém um caractere de espaço, por exemplo, como no exemplo a seguir
então, especificar o URL do local do esquema da seguinte maneira não é suficiente quando você está desenvolvendo algum aplicativo independente que deve funcionar também offline
Eu aprendi que o resultado dessa resolução de URL de localização de esquema é um arquivo que tem um caminho como o seguinte
Quando iniciei meu aplicativo em algum outro diretório que não continha caracteres de espaço em seu caminho, a resolução de localização do esquema funcionou bem. Talvez alguém tenha enfrentado problemas semelhantes? No entanto, descobri que o protocolo do classpath funciona bem no meu caso
fonte
Eu tinha enfrentado esse problema semelhante também. No meu caso, minha resolução é bem diferente. Este é meu arquivo xml de contexto de primavera:
Não estou especificando nenhuma versão do xsd, pois quero que o spring use a versão mais recente do xsd dentro das dependências do spring. A versão spring que meu aplicativo usou foi spring-beans-4.3.1.RELEASE.jar: 4.3.1.RELEASE e quando eu montei meu aplicativo em jar, todas as dependências de spring existem em meu classpath. No entanto, recebi o seguinte erro durante a inicialização do meu contexto de aplicativo Spring:
Depois de um tempo difícil para solucionar o problema, descobri que o problema se deve ao index.list dentro da pasta META-INF do meu arquivo jar. Com o arquivo index.list , os manipuladores de namespace spring não podem ser localizados para analisar o xml de contexto do aplicativo spring corretamente. Você pode ler mais sobre esta edição da primavera SPR-5705
Removendo a indexação do meu plug-in maven-jar , consigo resolver o problema. Espero que isso economize algum tempo para pessoas com o mesmo problema.
fonte
Apenas certifique-se de que o arquivo jar do Spring relevante esteja em seu classpath de runtime. No meu caso, faltava spring-tx-4.3.4.RELEASE.jar do classpath de tempo de execução. Depois de adicionar este jar, o problema foi resolvido.
fonte
Se não houver conexão com a Internet em sua plataforma e você usar o Eclipse, siga estas etapas (isso resolve meu problema)
Exemplo:
fonte
Remova os jars que você adicionou recentemente no web-inf -> lib. por exemplo jars jstl.
fonte