Missing class org.springframework.objenesis.ObjenesisStd
2015-06-08 11:59
423 查看
今天spring整合mongo
在调试过程中发现以下问题:
我的配置文件:
<bean id="userCredentials" class="org.springframework.data.authentication.UserCredentials">
<constructor-arg name="username" value="${mongo.username}"/>
<constructor-arg name="password" value="${mongo.password}"/>
</bean>
<mongo:mongo id="mongo" replica-set="127.0.0.1:27017">
<!-- 一些连接属性的设置 -->
<mongo:options
connections-per-host="8"
threads-allowed-to-block-for-connection-multiplier="3"
connect-timeout="10000"
max-wait-time="20000"
auto-connect-retry="true"
socket-keep-alive="true"
socket-timeout="1500"
write-number="1"
write-timeout="0"
write-fsync="true"/>
</mongo:mongo>
<mongo:db-factory dbname="database" mongo-ref="mongo" />
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg ref="mongo" />
<constructor-arg name="databaseName" value="mytest" />
</bean>
测试代码:
public void testQueryTest() {
context = new ClassPathXmlApplicationContext("spring/spring-datasource-mogon-1.xml");
mongoTemplate = (MongoTemplate) context.getBean("mongoTemplate");
DBCollection coll = mongoTemplate.getCollection("test");
System.out.println("Collection mycol selected successfully");
DBCursor cursor = coll.find();
int i=1;
while (cursor.hasNext()) {
System.out.println("Inserted Document: "+i);
System.out.println(cursor.next());
i++;
}
}
经过查询发现后,发现我引用的spring-data-mongodb的jar包的版本是1.6.2的、mongo.1.9.2.jar,spring-data-mongodb.1.6以上的版本需要配置的spring的版本需要4.0以上(http://stackoverflow.com/questions/25262248/missing-class-org-springframework-objenesis-objenesisstd)。我的spring的版本是2.3的。
由于spring改动后,整个项目改动比较大,影响比较大,所以选择修改spring-data-mongodb的版本,后期将版本降级为1.5.2,后启动并运行。问题解决。
在调试过程中发现以下问题:
Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.data.mongodb.core.MongoTemplate]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/springframework/objenesis/ObjenesisStd at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:163) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:121) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:280) ... 51 more Caused by: java.lang.NoClassDefFoundError: org/springframework/objenesis/ObjenesisStd at org.springframework.data.mongodb.core.convert.DefaultDbRefResolver.<init>(DefaultDbRefResolver.java:72) at org.springframework.data.mongodb.core.MongoTemplate.getDefaultMongoConverter(MongoTemplate.java:1961) at org.springframework.data.mongodb.core.MongoTemplate.<init>(MongoTemplate.java:210) at org.springframework.data.mongodb.core.MongoTemplate.<init>(MongoTemplate.java:174) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:148) ... 53 more Caused by: java.lang.ClassNotFoundException: org.springframework.objenesis.ObjenesisStd at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
我的配置文件:
<bean id="userCredentials" class="org.springframework.data.authentication.UserCredentials">
<constructor-arg name="username" value="${mongo.username}"/>
<constructor-arg name="password" value="${mongo.password}"/>
</bean>
<mongo:mongo id="mongo" replica-set="127.0.0.1:27017">
<!-- 一些连接属性的设置 -->
<mongo:options
connections-per-host="8"
threads-allowed-to-block-for-connection-multiplier="3"
connect-timeout="10000"
max-wait-time="20000"
auto-connect-retry="true"
socket-keep-alive="true"
socket-timeout="1500"
write-number="1"
write-timeout="0"
write-fsync="true"/>
</mongo:mongo>
<mongo:db-factory dbname="database" mongo-ref="mongo" />
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg ref="mongo" />
<constructor-arg name="databaseName" value="mytest" />
</bean>
测试代码:
public void testQueryTest() {
context = new ClassPathXmlApplicationContext("spring/spring-datasource-mogon-1.xml");
mongoTemplate = (MongoTemplate) context.getBean("mongoTemplate");
DBCollection coll = mongoTemplate.getCollection("test");
System.out.println("Collection mycol selected successfully");
DBCursor cursor = coll.find();
int i=1;
while (cursor.hasNext()) {
System.out.println("Inserted Document: "+i);
System.out.println(cursor.next());
i++;
}
}
经过查询发现后,发现我引用的spring-data-mongodb的jar包的版本是1.6.2的、mongo.1.9.2.jar,spring-data-mongodb.1.6以上的版本需要配置的spring的版本需要4.0以上(http://stackoverflow.com/questions/25262248/missing-class-org-springframework-objenesis-objenesisstd)。我的spring的版本是2.3的。
由于spring改动后,整个项目改动比较大,影响比较大,所以选择修改spring-data-mongodb的版本,后期将版本降级为1.5.2,后启动并运行。问题解决。
相关文章推荐
- java实现Kafka生产者示例
- java 转义字符
- Java项目管理之一:Svn
- spring :概述
- java异步线程
- eclipse 和 adt 适应mac的Retina字体设置
- struts2的配置
- Eclipse spring基本配置步骤
- java.lang.IllegalStateException: commit already called 的处理办法
- 一条命令安装服务器java
- Java批量生成Mac地址到文件
- Java中异常处理相关笔记
- 【DataStructure】The description of Java Collections Framework
- Java8中新增的Stream API
- Struts2项目配置
- Eclipse工具使用技巧总结
- Spring -- 三种配置方式
- Spring -- 三种配置方式
- Spring -- 三种配置方式
- Java开发中的23种设计模式详解