spring mongo数据异常,通过xml进行配置

时间:2012-10-02 12:53:02

标签: spring mongodb

希望有人可以帮助我。我正在使用mongo处理spring-data,但不知怎的,它给了我一个运行时错误:

  

Oct 02,2012 8:15:24 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh   信息:刷新org.springframework.context.support.ClassPathXmlApplicationContext@54d57bcb:启动日期[Tue Oct 02 20:15:24 SGT 2012];上下文层次结构的根   2012年10月2日下午8:15:24 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions   信息:从类路径资源[mongodb / configuration / mongo-config.xml]加载XML bean定义   线程" main"中的例外情况org.springframework.beans.factory.BeanDefinitionStoreException:从类路径资源[mongodb / configuration / mongo-config.xml]解析XML文档的意外异常;嵌套异常是org.springframework.beans.FatalBeanException:名称空间[http://www.springframework.org/schema/data/mongo]无效的NamespaceHandler类[org.springframework.data.mongodb.config.MongoNamespaceHandler]:处理程序问题类文件或依赖类;嵌套异常是java.lang.NoClassDefFoundError:org / springframework / data / repository / config / RepositoryConfigurationExtension       在org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:412)       在org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)       在org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)       在org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)       at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)       at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)       在org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:243)       在org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127)       at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:93)       at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:131)       在org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:535)       在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:449)       在org.springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.java:139)       在org.springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.java:83)       at parseXML.main(parseXML.java:36)       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)       在java.lang.reflect.Method.invoke(Method.java:601)       在com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)   引起:org.springframework.beans.FatalBeanException:名称空间[http://www.springframework.org/schema/data/mongo]无效的NamespaceHandler类[org.springframework.data.mongodb.config.MongoNamespaceHandler]:处理程序问题类文件或依赖类;嵌套异常是java.lang.NoClassDefFoundError:org / springframework / data / repository / config / RepositoryConfigurationExtension       在org.springframework.beans.factory.xml.DefaultNamespaceHandlerResolver.resolve(DefaultNamespaceHandlerResolver.java:139)       在org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1426)       在org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1421)       在org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:184)       在org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:140)       在org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:111)       在org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493)       在org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)       ......还有19个   引起:java.lang.NoClassDefFoundError:org / springframework / data / repository / config / RepositoryConfigurationExtension       at java.lang.Class.getDeclaredConstructors0(Native Method)       at java.lang.Class.privateGetDeclaredConstructors(Class.java:2404)       at java.lang.Class.getConstructor0(Class.java:2714)       at java.lang.Class.getDeclaredConstructor(Class.java:2002)       在org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:104)       在org.springframework.beans.factory.xml.DefaultNamespaceHandlerResolver.resolve(DefaultNamespaceHandlerResolver.java:129)       ......还有26个   引起:java.lang.ClassNotFoundException:org.springframework.data.repository.config.RepositoryConfigurationExtension       在java.net.URLClassLoader $ 1.run(URLClassLoader.java:366)       在java.net.URLClassLoader $ 1.run(URLClassLoader.java:355)       at java.security.AccessController.doPrivileged(Native Method)       在java.net.URLClassLoader.findClass(URLClassLoader.java:354)       at java.lang.ClassLoader.loadClass(ClassLoader.java:423)       at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:308)       at java.lang.ClassLoader.loadClass(ClassLoader.java:356)       ......还有32个

我的mongo-config.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:context="http://www.springframework.org/schema/context"
   xmlns:mongo="http://www.springframework.org/schema/data/mongo"
   xsi:schemaLocation="http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context-3.0.xsd
      http://www.springframework.org/schema/data/mongo
      http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
      http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<mongo:db-factory dbname="testuserexample" host="localhost" port="27017" />

<bean id="mongoTemplate">
    <constructor-arg ref="mongoDbFactory" />
</bean>

<mongo:repositories base-package="mongodb.repository" />

提前致谢!

3 个答案:

答案 0 :(得分:3)

如果您使用的是Maven,则应该将依赖项添加到spring-data-mongodb库

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-mongodb</artifactId>
    <version>1.1.0.M1</version>
</dependency>

答案 1 :(得分:1)

我也得到了同样的错误。 我找到了一个解决方案。 问题是我已经更改了我的pom.xml并为两个依赖项显式设置了最后一个版本(1.1.0.RELEASE):

  1. 弹簧数据mongodb的
  2. 弹簧数据公地芯
  3. 我得到了同样的异常:NoClassDefFoundError:... RepositoryConfigurationExtension

    我已经删除了我的pom.xml中的第二个依赖项,因为第一个“spring-data-mongodb”为第二个添加了一个隐含的依赖。 所以,现在Maven自动获取spring-data-commons-core依赖(1.4.0.RELEASE),它运行正常!

答案 2 :(得分:0)

如果您使用的是Maven,则这是唯一需要的依赖性: -

<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.2.0.RELEASE</version>
</dependency>

应用程序上下文文件中需要的配置: -

 <bean id="mongo" class="org.springframework.data.mongodb.core.MongoFactoryBean">
        <property name="host" value="localhost" />
    </bean>
    <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
        <constructor-arg ref="mongo" />
        <constructor-arg value="test" />
    </bean>