0

``我在实例化 mongoTemplate 时遇到以下异常

线程“main”中的异常 java.lang.NoClassDefFoundError: org.springframework.data.mongodb.core.MongoTemplate.getDefaultMongoConverter(MongoTemplate.java:1962) at org.springframework.data 的 org/springframework/data/mapping/model/FieldNamingStrategy .mongodb.core.MongoTemplate.(MongoTemplate.java:210) 在 org.springframework.data.mongodb.core.MongoTemplate.(MongoTemplate.java:174) 在 com.adobe.ffc.controller.MongoDBTest.createData(MongoDBTest.java :29) 在 com.adobe.ffc.controller.MongoDBTest.main(MongoDBTest.java:24) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 com.intellij.rt.execution.application.AppMain.main(AppMain.java:134) 引起:java.lang.ClassNotFoundException: org.springframework.data.mapping.model.FieldNamingStrategy at java.net.URLClassLoader$1 .run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java: 354)在 java.lang.ClassLoader.loadClass(ClassLoader.java:425) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:358)。 .. 还有 10 个在 java.net.URLClassLoader.findClass(URLClassLoader.java:354) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:355) 运行(URLClassLoader.java:366) )在 java.lang.ClassLoader.loadClass(ClassLoader.java:425) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:358) .. . 10 更多在 java.net.URLClassLoader.findClass(URLClassLoader.java:354) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:355) 运行(URLClassLoader.java:366) )在 java.lang.ClassLoader.loadClass(ClassLoader.java:425) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:358) .. . 10 更多

进程以退出代码 1 结束,错误来自以下代码中的第 1 行:

 MongoOperations mongoOps = new MongoTemplate(new Mongo(),"database");

        User user = new User();
        user.setId("200");
        user.setFullName("Mongo Template");
        user.setStatus("A");
        user.setAge("29");

        mongoOps.insert(user);

pom配置如下:

     <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>2.11.4</version>
    </dependency>

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

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-commons</artifactId>
        <version>1.5.0.RELEASE</version>
    </dependency>
4

1 回答 1

1

问题是将 Spring Data Release Trains 相互混合。

spring-data-mongodb 1.4是需要拥有的 Release Train Coddspring-data-commons 1.7的一部分,而spring-data-commons 1.5您当前使用的是Arora版本的一部分。

所以要么降级到,spring-data-mongodb 1.2要么升级到spring-data-commons 1.7. 也许还可以查看您的依赖项并检查潜在的冲突。

旁注:您可以查看spring data wiki页面以查看哪些版本已成为特定版本的一部分。

于 2014-11-04T11:54:35.530 回答