Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
找不到XML架构命名空间的Spring NamespaceHandler[http://www.springframework.org/schema/data/mongo]_Spring_Mongodb_Maven_Configuration - Fatal编程技术网

找不到XML架构命名空间的Spring NamespaceHandler[http://www.springframework.org/schema/data/mongo]

找不到XML架构命名空间的Spring NamespaceHandler[http://www.springframework.org/schema/data/mongo],spring,mongodb,maven,configuration,Spring,Mongodb,Maven,Configuration,我正在尝试构建一个示例Spring+MongoDB框架,我得到了下面的运行时错误 SEVERE: Context initialization failed org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://

我正在尝试构建一个示例Spring+MongoDB框架,我得到了下面的运行时错误

SEVERE: Context initialization failed
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/data/mongo]
Offending resource: ServletContext resource [/WEB-INF/spring-servlet.xml]

    at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
    at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)
    at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:80)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.error(BeanDefinitionParserDelegate.java:284)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1332)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1325)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:135)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:93)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
    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:93)
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:467)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:397)
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4887)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5381)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:722)

Apr 23, 2013 7:14:57 AM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/data/mongo]
Offending resource: ServletContext resource [/WEB-INF/spring-servlet.xml]

    at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
    at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)
    at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:80)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.error(BeanDefinitionParserDelegate.java:284)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1332)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1325)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:135)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:93)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
    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:93)
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:467)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:397)
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4887)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5381)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:722)
<bean id="mongoAddress" class="com.mongodb.ServerAddress">
    <constructor-arg name="host" value="${MONGO_HOST}" />
    <constructor-arg name="port" value="${MONGO_PORT}" />
</bean>

<bean id="mongo" class="com.mongodb.Mongo">
    <constructor-arg name="addr" ref="mongoAddress" />
    <constructor-arg name="options" ref="mongoOptions"/>
</bean>


<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
     <constructor-arg index="0" ref="mongo" />
     <constructor-arg index="1" value="mydb" />
</bean>
供您参考,我的代码在github中:

<bean id="mongoAddress" class="com.mongodb.ServerAddress">
    <constructor-arg name="host" value="${MONGO_HOST}" />
    <constructor-arg name="port" value="${MONGO_PORT}" />
</bean>

<bean id="mongo" class="com.mongodb.Mongo">
    <constructor-arg name="addr" ref="mongoAddress" />
    <constructor-arg name="options" ref="mongoOptions"/>
</bean>


<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
     <constructor-arg index="0" ref="mongo" />
     <constructor-arg index="1" value="mydb" />
</bean>
你知道怎么解决这个问题吗?谢谢你的时间

<bean id="mongoAddress" class="com.mongodb.ServerAddress">
    <constructor-arg name="host" value="${MONGO_HOST}" />
    <constructor-arg name="port" value="${MONGO_PORT}" />
</bean>

<bean id="mongo" class="com.mongodb.Mongo">
    <constructor-arg name="addr" ref="mongoAddress" />
    <constructor-arg name="options" ref="mongoOptions"/>
</bean>


<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
     <constructor-arg index="0" ref="mongo" />
     <constructor-arg index="1" value="mydb" />
</bean>
编辑:
我检查了jar,在那里找到了springmongodbxsd文件

james@james-Inspiron-1525:~/.m2/repository/org/springframework/data/spring-data-mongodb/1.2.0.RELEASE$ ls
_maven.repositories                                 spring-data-mongodb-1.2.0.RELEASE.pom
spring-data-mongodb-1.2.0.RELEASE.jar               spring-data-mongodb-1.2.0.RELEASE.pom.sha1
spring-data-mongodb-1.2.0.RELEASE.jar.sha1          spring-data-mongodb-1.2.0.RELEASE-sources.jar
spring-data-mongodb-1.2.0.RELEASE-javadoc.jar       spring-data-mongodb-1.2.0.RELEASE-sources.jar.sha1
spring-data-mongodb-1.2.0.RELEASE-javadoc.jar.sha1
james@james-Inspiron-1525:~/.m2/repository/org/springframework/data/spring-data-mongodb/1.2.0.RELEASE$ jar -tf spring-data-mongodb-1.2.0.RELEASE.jar | grep xsd
org/springframework/data/mongodb/config/spring-mongo-1.2.xsd
org/springframework/data/mongodb/config/spring-mongo-1.1.xsd
org/springframework/data/mongodb/config/spring-mongo-1.0.xsd
james@james-Inspiron-1525:~/.m2/repository/org/springframework/data/spring-data-mongodb/1.2.0.RELEASE$ 
<bean id="mongoAddress" class="com.mongodb.ServerAddress">
    <constructor-arg name="host" value="${MONGO_HOST}" />
    <constructor-arg name="port" value="${MONGO_PORT}" />
</bean>

<bean id="mongo" class="com.mongodb.Mongo">
    <constructor-arg name="addr" ref="mongoAddress" />
    <constructor-arg name="options" ref="mongoOptions"/>
</bean>


<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
     <constructor-arg index="0" ref="mongo" />
     <constructor-arg index="1" value="mydb" />
</bean>

您必须确保WEB-INF/libs目录中有一个spring-data-mongodb-1.2.0.RELEASE.jar。请检查一下

我已经找到了这个问题的解决方案

<bean id="mongoAddress" class="com.mongodb.ServerAddress">
    <constructor-arg name="host" value="${MONGO_HOST}" />
    <constructor-arg name="port" value="${MONGO_PORT}" />
</bean>

<bean id="mongo" class="com.mongodb.Mongo">
    <constructor-arg name="addr" ref="mongoAddress" />
    <constructor-arg name="options" ref="mongoOptions"/>
</bean>


<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
     <constructor-arg index="0" ref="mongo" />
     <constructor-arg index="1" value="mydb" />
</bean>
尝试直接删除架构和定义的mongo bean,如下所示:

<bean id="mongoAddress" class="com.mongodb.ServerAddress">
    <constructor-arg name="host" value="${MONGO_HOST}" />
    <constructor-arg name="port" value="${MONGO_PORT}" />
</bean>

<bean id="mongo" class="com.mongodb.Mongo">
    <constructor-arg name="addr" ref="mongoAddress" />
    <constructor-arg name="options" ref="mongoOptions"/>
</bean>


<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
     <constructor-arg index="0" ref="mongo" />
     <constructor-arg index="1" value="mydb" />
</bean>

<bean id="mongoAddress" class="com.mongodb.ServerAddress">
    <constructor-arg name="host" value="${MONGO_HOST}" />
    <constructor-arg name="port" value="${MONGO_PORT}" />
</bean>

<bean id="mongo" class="com.mongodb.Mongo">
    <constructor-arg name="addr" ref="mongoAddress" />
    <constructor-arg name="options" ref="mongoOptions"/>
</bean>


<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
     <constructor-arg index="0" ref="mongo" />
     <constructor-arg index="1" value="mydb" />
</bean>


这个解决方案对我来说很好。

看起来您是在运行时而不是编译时得到的。我无法在Github中编译您的项目;但是,如果包含XSD的JAR不在组装的WAR文件中,通常会发生此类错误。您是否验证了Spring MongoDB JAR是否在您的WEB-INF/lib目录中?是的,您向我们展示了JAR在您的Maven存储库中,但它们需要在运行时位于WEB应用程序的类路径上,这通常意味着WEB-INF/lib。您的pom与github中的pom不同吗?我找不到您引用spring数据jar的位置。可能与有关?这不是spring数据连接样式@user1944413写出了正确的答案
<bean id="mongoAddress" class="com.mongodb.ServerAddress">
    <constructor-arg name="host" value="${MONGO_HOST}" />
    <constructor-arg name="port" value="${MONGO_PORT}" />
</bean>

<bean id="mongo" class="com.mongodb.Mongo">
    <constructor-arg name="addr" ref="mongoAddress" />
    <constructor-arg name="options" ref="mongoOptions"/>
</bean>


<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
     <constructor-arg index="0" ref="mongo" />
     <constructor-arg index="1" value="mydb" />
</bean>