Java开发中调用webservice,方法调用报了 Java.Lang.NoSucheMethod..........,印象中记得是jar包冲突,maven项目,一看,这一堆jar包...用eclipse的pom可视化界面,Dependency Hierarchy 看到了不少包冲突,先从webservice 依赖的jar开始,顺着这一思路,一顿排除,没管用。
网上搜了几篇文章,梳理了下解决问题的思路:
1、你调的类里缺少该方法,可能是由于jar包的版本不对
2、项目依赖的jar包,A包和B包有相同的类(比如a类),你的目标是调用A包a类,结果被后加载的B包覆盖了,结果无意中调用了B包a类
3、项目虽然只有A包,但你的应用服务器(容器) 包含了B包,他们含有相同的类。从网上得知在weblogic9.2中发布cxfwebservice有这一问题
既然是这样,就不从刚猜测的jar包冲突入手,而是从缺少方法的类入手,追本溯源。
先看我碰到的错误内容:
javax.servlet.ServletException: java.lang.NoSuchMethodError: **.**.client.clientbean.ServiceSoap.getOrderById(JZLjava/util/List;)L**/**/client/clientbean/Order;
这句话有类路径,在加上异常里提供的堆栈信息,应该能快速定位到哪个包里的哪个类。到类里看一眼,有没有你要调用的方法(这里是getOrderById)。没有的情况一般很少,包里没方法,在写代码的时候估计也不会调用这个方法。
如果有,那么看看别的包里是否也存在同样的包,同样的类。我今天遇到的错误就是这样的:oom包有ServiceSoap,order包还有ServiceSoap,在判断oom包未用到,之后,果断排了,bug解决了。
出现java.lang.NoSuchMethodException的异常
错误信息如下:
(wt.fc.fcResource/0) wt.util.WTException: 操作: "getIBAValue" 失败。
嵌套异常是: wt.util.WTRemoteException: 无法调用远程方法; 嵌套异常是:
java.lang.NoSuchMethodException: ext.ckt.pdm.service.CKTServiceFwd.getIBAValue(wt.doc.WTDocument,java.lang.String)
方法调用说明:因为在windchill中调用getIBAValue()方法,需要run在MethodServer端,所以必须把它写到service里,然后通过Fwd来调用它。
方法申明如下:
public String getIBAValue(IBAHolder ibaHolder, String name);
问题就出在方法变量,IBAHolder是一个abstract interface,然而远端方法调用需要进行对象的实例化,中间传递的变量也必须是可read和write的(要进行序列化和反序列化),也就是说变量对象必须是实现了java.io.Serializable接口的对象,IBAHolder显然没有,固不行。
茶杯头甜蜜终章dlc 官方手机版v1.0.0.3
下载火柴人传说暗影格斗内置菜单 最新版v3.0.1
下载荒野乱斗测试服 安卓版v61.10.3
下载荒野乱斗彩虹服 安卓版v61.10.3
下载寒霜启示录 安卓版v1.25.10
寒霜启示录是一款生存模拟游戏,不少玩家可能对于末日都有着自己
末日城堡免广告版 安卓最新版v0.7.1
末日城堡免广告版是一款非常好玩的模拟经营类游戏,内部可以不看
甜蜜人生模拟器 最新版v1.4.5
甜蜜人生模拟器是一款非常好玩的模拟恋爱手游,玩家在这里能够对
武器锻造师内置功能菜单 v10.4
武器锻造师内置菜单版是游戏的破解版本,在该版本中为玩家提供了
开放空间overfield 安卓版v1.0.5
开放空间Overfield是一款箱庭养成经营手游,让你在广阔