Estoy usando Spring y application-context.xml
tengo las siguientes definiciones:
<?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"
>
.....
Cuando se pierde la conexión a Internet, no puedo ejecutar mi aplicación a través de tomcat o jetty.
Da:
[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........
¿Alguna sugerencia de cómo solucionarlo?
Lo resolví
classpath:spring-context-2.1.xsd
es la clave para trabajar en modo offline (sin conexión a Internet). También copiéspring-context-2.1.xsd
cerca (mismo directorio) del archivo application-context.xmlfuente
Algo como esto funcionó para mí.
fuente
En caso de que alguien llegue aquí a través de la misma raíz que yo, encontré este problema porque estaba construyendo un solo JAR con todas las dependencias, incluidos los Spring JAR. Como resultado, se sobrescribió el archivo spring.schemas en algunos de los directorios META-INF de Spring JAR.
Encontré soluciones sugeridas aquí: ¿Cómo crear un jar ejecutable basado en primavera con maven?
fuente
Me encontré con un problema similar hoy. En mi caso, fue el complemento de sombra el culpable, además de que springframework.org tuvo una interrupción. El siguiente fragmento aclaró las cosas:
HTH alguien
fuente
Debe verificar que los archivos
spring.handlers
yspring.schemas
estén en la ruta de clases y tengan el contenido correcto.Esto se puede hacer con
ClassLoader.getResource(..)
. Puede ejecutar el método con un depurador remoto en el entorno de ejecución. La configuración de creación de XML extensible se describe en Spring Reference B.5. Registrar el controlador y el esquema .Normalmente, los archivos deben estar en el jar de Spring (springframework.jar / META-INF /) y en la ruta de clase cuando se puede iniciar Spring.
fuente
Encontrar ruta de clases
Si está utilizando eclipse, haga clic en el archivo jar correspondiente. Ir a -> META-INF-> abrir archivo spring.schemas
verá las líneas algo así como a continuación.
http://www.springframework.org/schema/context/spring-context.xsd=org/springframework/context/config/spring-context-3.1.xsd
copiar after = y configurar beans como se muestra a continuació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">
fuente
Debe agregar ubicaciones de esquema a la definición de su bean, y luego se pueden encontrar en classpath en lugar de buscarlas en la red. Dados sus problemas de formato, no estoy 100% seguro de que no lo esté haciendo ya.
fuente
Resolvimos el problema haciendo esto:
Tenga en cuenta que nuestra aplicación es una aplicación sin conexión independiente de Java.
fuente
Si está utilizando eclipse para su desarrollo, es útil instalar el complemento STS para Eclipse [del marketPlace para la versión específica de eclipse.
Ahora, cuando intente crear un nuevo archivo de configuración en una carpeta (normalmente recursos) dentro del proyecto, las opciones tendrían una "Carpeta Spring" y puede elegir una opción "Archivo de definición Spring Bean" Spring> Spring Bean Configuation File.
Con esta opción seleccionada, cuando sigue los pasos, le pide que seleccione los espacios de nombres y las versiones específicas:
Y así se puede eliminar la posibilidad de tener un jar inexistente o una versión antigua.
También habría publicado imágenes, pero mi reputación es bastante baja .. :(
fuente
El problema radica en los archivos JAR que usa en su aplicación.
Lo que hice, que funcionó, fue meterme en los JARs para SPRING-CORE, SPRING-BEANS, SPRING-CONTEXT, SPRING-TX que coinciden con la versión que estoy usando. Dentro de la carpeta META-INF, concatené todos los spring.handlers y spring.schemas que vienen en esos JAR.
Maté dos pájaros de un tiro, resolví el problema de los esquemas para que esto también funcione correctamente en modo offline.
PD: Probé el complemento maven para SHADE y los transformadores, pero no funcionó.
fuente
Tuve este problema. Para la posteridad, mi excepción fue:
Lo resolví cuando me di cuenta de que la versión de
spring-beans
especificada en mi Mavenpom.xml
era4.1.x
, es decir, la versión específica.xsd
no se podía encontrar en el classpath.Esto estuvo enmascarado durante mucho tiempo porque normalmente estoy en línea, así que pensé que estar fuera de línea había "roto" la compilación. Pero realmente no tuvo nada que ver con eso. Actualizar my
pom.xml
para especificar la versión correcta despring-beans
, es decir4.2.x
, lo solucionó.fuente
Tuve el mismo problema cuando estoy usando Spring-context versión 4.0.6 y Spring-Security versión 4.1.0.
Al cambiar la versión de spring-security a 4.0.4 (porque 4.0.6 de spring-security no está disponible) en mi pom y security xml -> schemaLocation, se compila sin Internet.
Eso significa que también puede resolver esto de la siguiente manera:
cambiando spring-security a una versión anterior o la misma que spring-context.
cambiando spring-context a una versión más nueva o la misma que spring-security.
(de cualquier forma spring-context sea más reciente o la misma versión que spring-security)
fuente
Me gustaría agregar algún aspecto adicional de esta discusión. En el sistema operativo Windows, he observado que cuando un archivo jar que contiene un esquema se almacena en un directorio cuya ruta contiene un carácter de espacio, por ejemplo, como en el siguiente ejemplo
luego, especificar la URL de ubicación del esquema de la siguiente manera no es suficiente cuando está desarrollando alguna aplicación independiente que debería funcionar también sin conexión
He aprendido que el resultado de dicha resolución de URL de ubicación de esquema es un archivo que tiene una ruta como la siguiente
Cuando inicié mi aplicación desde algún otro directorio que no contenía caracteres de espacio en su ruta, la resolución de la ubicación del esquema funcionó bien. ¿Quizás alguien enfrentó problemas similares? Sin embargo, descubrí que el protocolo classpath funciona bien en mi caso
fuente
También me había encontrado con este problema similar. En mi caso, mi resolución es bastante diferente. Aquí está mi archivo xml de contexto de primavera:
No estoy especificando ninguna versión xsd ya que quiero que Spring use la última versión xsd dentro de las dependencias de Spring. La versión de primavera que usó mi aplicación fue spring-beans-4.3.1.RELEASE.jar: 4.3.1.RELEASE y cuando ensamblo mi aplicación en jar, todas las dependencias de primavera existen en mi classpath. Sin embargo, recibí el siguiente error durante el inicio de mi contexto de aplicación de primavera:
Después de un tiempo de resolución de problemas, descubrí que el problema se debe al index.list dentro de la carpeta META-INF de mi archivo jar. Con el archivo index.list , los controladores del espacio de nombres Spring no se pueden ubicar para analizar correctamente el xml del contexto de la aplicación Spring. Puedes leer más sobre este número de primavera. SPR-5705
Al eliminar la indexación de mi maven-jar-plugin , logro resolver el problema. Espero que esto ahorre algunas veces a personas que tienen el mismo problema
fuente
Solo asegúrese de que el archivo jar de primavera relevante esté en su ruta de clase de tiempo de ejecución. En mi caso, nos faltaba spring-tx-4.3.4.RELEASE.jar de classpath en tiempo de ejecución. Después de agregar este frasco, se resolvió el problema.
fuente
Si no hay conexión a Internet en su plataforma y usa Eclipse, siga estos pasos (resuelve mi problema)
Ejemplo:
fuente
Elimine los archivos jar que agregó recientemente en web-inf -> lib. por ejemplo, jstl jars.
fuente