使用spring,下面是applicationContext-service.xml的代码:
<bean id="mediaObjectService" class="path.MediaObjectServiceImpl">
<property name="mediaObjectDao" >
<ref bean="mediaObjectDao"/>
</property>
<property name="semanticQuestionDao" >
<ref bean="semanticQuestionDao"/>
</property>
<aop:scoped-proxy/>
</bean>
在做测试时,我得到了他的错误:
org.springframework.beans.factory.BeanCreationException: 使用名称创建bean时出错 'scopedTarget.mediaObjectService' 在类路径资源中定义 [的applicationContext-service.xml中]: bean的初始化失败;嵌套 例外是 java.lang.NoSuchMethodError: net.sf.cglib.proxy.Enhancer.setInterceptDuringConstruction(Z)V
据我所知,会话作用域对象总是有一个名为scopedTarget.
的前缀到bean-id的名称。
所以,如果我是对的,mediaObjectService
是bean-id,它是正确的声明
也许我错了,但无论如何,我没有看到我犯的错误。
任何帮助??
提前致谢
答案 0 :(得分:5)
我使用了cglib-nodep-2.1_3.jar并解决了我的问题
答案 1 :(得分:4)
Google suggests这可能是由于您的类路径上的cglib库的重复版本。
答案 2 :(得分:0)
看起来您的测试在其类路径上运行了cglib.jar
的不兼容版本,并且与Spring的期望发生冲突。确保您使用的是正确的版本,最有可能是2.1_3
。
答案 3 :(得分:0)
问题如下:
我正在使用java中的Web应用程序项目进行测试。在此应用程序中,applicationContext-service.xml具有标记<aop:scoped-proxy/>
,有助于消除范围阻抗不匹配
使用JUnit测试不能很好地修复此标记,因此对我来说,至少目前的解决方案是在其他应用程序中测试此服务。
无论如何都要发表您的意见
答案 4 :(得分:0)
检查.classpath文件中已定义cglib-2.1_3.jar的顺序。确保它是在弹簧罐之前定义的。