问题解决:java.lang.NoSuchMethodError: org.springframework.aop.support.AopUtils.isCglibProxyClass
最近进行项目微服务重构,而有一个老项目是使用cxf。在重构之后,项目运行的时候,报方法不存在的问题。本篇博客主要是针对这种情况提出解决方案。
·
问题场景
最近进行项目微服务重构,而有一个老项目是使用cxf。在重构之后,项目运行的时候,报错,提示:
java.lang.NoSuchMethodError: org.springframework.aop.support.AopUtils.isCglibProxyClass
问题环境
软件 | 版本 |
---|---|
springboot | 2.1.1.RELEASE |
spring | 5.1.3.RELEASE |
cxf | 2.6.6 |
问题原因
从报错提示,可以知道是类AopUtils没有方法isCglibProxyClass。通过查看源码,也发现的确是不存在该方法。该方法已经被移植到org.springframework.util.ClassUtils里面去了。而旧项目的spring版本是2.5。版本差异较大,方法也发生了改变。
解决方案
这里有三个方案提供给大家进行参考
一、降低spring版本
既然是版本导致的方法不存在,降低spring版本即可。不过这种方法不是很可取,毕竟牵一而动全身,可能会导致其他问题的发生。
二、升级CXF版本
cxf版本是2.6.6,升级版本至3.0以上,应该可以解决这个问题。不过原来xml和java里面关于webservice的部分可能得做点微调。
三、项目新建AopUtils类,覆盖写入方法
如果不想升级版本,直接在项目新建相同路径的类,然后复制现有方法的内容,之后将缺少的方法写入即可。如下:
public static boolean isCglibProxyClass(Class clazz) {
return clazz != null && clazz.getName().indexOf("$$") != -1;
}
结果
我这里是选择了第三种方法,启动项目无报错,问题顺利解决。
总结
根据实际情况选择解决方法,事半功倍!!!
随缘求赞
如果我的文章对大家产生了帮忙,可以在文章底部点个赞或者收藏;
如果有好的讨论,可以留言;
如果想继续查看我以后的文章,可以点击关注
可以扫描以下二维码,关注我的公众号:枫夜之求索阁,查看我最新的分享!
更多推荐
已为社区贡献3条内容
所有评论(0)