CXF java.lang.NoSuchMethodError 错误解决

本文解析了NoSuchMethodError错误的产生原因,通常是由于类路径中存在多个同名但不同版本的类,导致运行时调用的方法在当前加载的类中不存在。文章提供了详细的排查和解决步骤,包括如何定位冲突的jar包并正确移除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NoSuchMethodError是一个运行时错误,在编译时一般不会出现这个错误。
既然能成功编译,就说明方法本身是存在的,方法所在的类也是存在的,而且都可以正常的引用到。

那么为什么还会出现这个错误?
方法本身是存在的,方法所在类也是存在的,那么在运行时还会出现这个错误,
就只能说明运行时引用的类里面没有这个方法。
这说起来有点拗口,简单的说,就是存在至少两个类名一样的类A和B,其中A有一个need方法,B则没有这个方法。编译时,编译器发现依赖路径下有需要的类A或者B,则编译通过。
但是执行时,在要调用A.need()方法时,因为A和B同名,错误的调用了B.need()方法,这个方法本身是不存在的,自然就出现了NoSuchMethodError这个错误

解决办法:
通过分析可以发现,其实问题产生的根本原因是类有冲突,也就是存在多个满足条件的类A,B,C..
这种情况一般出现在引用某个库或者jar时,同时引用了多个版本而导致的。
解决办法也简单,找出抛出NoSuchMethodError这个异常的类,然后找出包含这个类的所有Jar,然后保留正确的办法,把其他的jar删掉,就可以了。

细节操作注意:

如果要在eclipse中找出这个类的所有jar包的话,ctr+shit+t之后输入类名就会自动显示出来对应的Jar包位置;双击进入jar包后,ctr+o查看有没有那个方法;如果都有的话,我们就不知道是那个是正确的jar包了;
如果不知道哪个是正确的jar,请使用程序员都会的:
排除大法 一个一个试过去,谁不报错,谁就是对的!

对于cxf而言,一般的情况就是xmlschema he xmlschma-core两个jar冲突,我们保留core,另外一个删除就行了。

collections-3.2.2.jar:/app/IBM/WebSphere/AppServer/profiles/AppSrv01/installedApps/ordosjfappCell01/appgate_war.ear/appgate.war Parent: com.ibm.ws.classloader.CompoundClassLoader@1f4260c1[PF][app:appgate_war] Delegation Mode: PARENT_FIRST). [25-5-29 17:05:38:671 CST] 000000bc SystemErr R at org.apache.cxf.common.xmlschema.SchemaCollection.read(SchemaCollection.java:133) [25-5-29 17:05:38:671 CST] 000000bc SystemErr R at org.apache.cxf.databinding.AbstractDataBinding.addSchemaDocument(AbstractDataBinding.java:192) [25-5-29 17:05:38:672 CST] 000000bc SystemErr R at org.apache.cxf.databinding.AbstractDataBinding.addSchemaDocument(AbstractDataBinding.java:95) [25-5-29 17:05:38:672 CST] 000000bc SystemErr R at org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:349) [25-5-29 17:05:38:672 CST] 000000bc SystemErr R at org.apache.cxf.service.factory.AbstractServiceFactoryBean.initializeDataBindings(AbstractServiceFactoryBean.java:86) [25-5-29 17:05:38:672 CST] 000000bc SystemErr R at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:444) [25-5-29 17:05:38:672 CST] 000000bc SystemErr R at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromClass(JaxWsServiceFactoryBean.java:690) [25-5-29 17:05:38:672 CST] 000000bc SystemErr R at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:507) [25-5-29 17:05:38:672 CST] 000000bc SystemErr R at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:241) [25-5-29 17:05:38:672 CST] 000000bc SystemErr R at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:205) [25-5-29 17:05:38:672 CST] 000000bc SystemErr R at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:101) [25-5-29 17:05:38:672 CST] 000000bc SystemErr R at org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java:90) [25-5-29 17:05:38:672 CST] 000000bc SystemErr R at org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:153) [25-5-29 17:05:38:672 CST] 000000bc SystemErr R at org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean.java:151) [25-5-29 17:05:38:672 CST] 000000bc SystemErr R at com.uxunchina.appgate.socket.client.WebServiceClient_UXUNJFYSmgService.createIjfyFrontService(WebServiceClient_UXUNJFYSmgService.java:37) [25-5-29 17:05:38:672 CST] 000000bc SystemErr R at com.uxunchina.appgate.socket.client.WebServiceClientUtils.qurshortmsg(WebServiceClientUtils.java:315) [25-5-29 17:05:38:672 CST] 000000bc SystemErr R at com.uxunchina.appgate.utils.UxunScanMsg$UxunXFSmg.run(UxunScanMsg.java:53) [25-5-29 17:05:38:672 CST] 000000bc SystemErr R at java.util.TimerThread.mainLoop(Timer.java:566) [25-5-29 17:05:38:672 CST] 000000bc SystemErr R at java.util.TimerThread.run(Timer.java:516) [25-5-30 15:05:34:755 CST] 000000ba SystemErr R java.net.SocketException: Socket closed [25-5-30 15:05:34:755 CST] 000000ba SystemErr R at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:450) [25-5-30 15:05:34:755 CST] 000000ba SystemErr R at java.net.ServerSocket.implAccept(ServerSocket.java:623) [25-5-30 15:05:34:755 CST] 000000ba SystemErr R at java.net.ServerSocket.accept(ServerSocket.java:582) [25-5-30 15:05:34:755 CST] 000000ba SystemErr R at com.uxunchina.appgate.socket.UxunSocketServerInit.run(UxunSocketServerInit.java:41) [25-5-30 15:05:34:755 CST] 000000ba SystemErr R at java.lang.Thread.run(Thread.java:785) [25-5-30 15:07:58:551 CST] 000000b8 SystemErr R java.net.BindException: Address already in use [25-5-30 15:07:58:551 CST] 000000b8 SystemErr R at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:417) [25-5-30 15:07:58:551 CST] 000000b8 SystemErr R at java.net.ServerSocket.bind(ServerSocket.java:444) [25-5-30 15:07:58:551 CST] 000000b8 SystemErr R at java.net.ServerSocket.<init>(ServerSocket.java:258) [25-5-30 15:07:58:551 CST] 000000b8 SystemErr R at java.net.ServerSocket.<init>(ServerSocket.java:149) [25-5-30 15:07:58:551 CST] 000000b8 SystemErr R at com.uxunchina.appgate.socket.ESB2JFYSocketServerInit.run(ESB2JFYSocketServerInit.java:35) [25-5-30 15:07:58:551 CST] 000000b8 SystemErr R at java.lang.Thread.run(Thread.java:785) [25-5-30 15:08:04:822 CST] 0000006d SystemErr R log4j:WARN No such property [maxBackupIndex] in org.apache.log4j.DailyRollingFileAppender. [25-5-30 15:08:05:173 CST] 0000006d SystemErr R log4j:WARN No such property [maxBackupIndex] in org.apache.log4j.DailyRollingFileAppender. [25-5-30 15:08:11:060 CST] 0000006b SystemErr R log4j:WARN No such property [maxBackupIndex] in org.apache.log4j.DailyRollingFileAppender. [25-5-30 15:08:11:061 CST] 0000006b SystemErr R log4j:WARN No such property [maxBackupIndex] in org.apache.log4j.DailyRollingFileAppender. [25-5-30 15:09:00:860 CST] 000000b9 SystemErr R Exception in thread "Timer-8" java.lang.NoSuchMethodError: org/apache/ws/commons/schema/XmlSchemaCollection.read(Lorg/w3c/dom/Document;Ljava/lang/String;)Lorg/apache/ws/commons/schema/XmlSchema; (loaded from file:/app/IBM/WebSphere/AppServer/plugins/org.apache.axis2.jar by org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader@853b4477[org.apache.axis2:7.0.0(id=298)]) called from class org.apache.cxf.common.xmlschema.SchemaCollection (loaded from file:/app/IBM/WebSphere/AppServer/profiles/AppSrv01/installedApps/ordosjfappCell01/appgate_war.ear/appgate.war/WEB-INF/lib/cxf-common-utilities-2.4.10.jar by com.ibm.ws.classloader.CompoundClassLoader@ef9e9231[war:appgate_war/appgate.war] Local ClassPath: /app/IBM/WebSphere/AppServer/profiles/AppSrv01/installedApps/ordosjfappCell01/appgate_war.ear/appgate.war/WEB-INF/classes:/app/IBM/WebSphere/AppServer/profiles/AppSrv01/installedApps/ordosjfappCell01/appgate_war.ear/appgate.war/WEB-
最新发布
07-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值