Java——接口测试问题(com.alibaba.dubbo.common.bytecode.NoSuchMethodException)

正文

  小菜继续成长积累中,今天小菜说说我这两天费了九牛二虎之力写好的接口,在test类中进行测试有数据,前端调用此接口时怎么着都没有数据!
  Why???
  Because——代码没有提交,提交后Jenkins上没有构建
  愁苦了一天,查了一天,才发现都是好低级的错误呀,就是因为我满心欢喜的以为自己在test类中测试自己写的接口有数据了,我就没事了,然而却不知道自己的职责是要让前端能够获取到数据,漏掉了到真正起作用的测试——swagger。下面小菜记录一下因为自己的无知而遇到的问题。

错误详情

2018-05-09 20:30:29,884 ERROR com.dmsdbj.itoo.teachingManagement.controller.TeacherCourseController.queryTeachercourseInfo(TeacherCourseController.java:623) http-bio-8080-exec-7 |- TeacherCourseController.queryTeachercourseInfo()方法出错
com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method queryTeachercourseInfo in the service com.dmsdbj.itoo.teachingManagement.facade.TeacherCourseFacade. Tried 3 times of the providers [192.168.22.53:20889] (1/1) from the registry 192.168.22.60:2181 on the consumer 192.168.228.11 using the dubbo version 2.5.8. Last error is: Failed to invoke remote method: queryTeachercourseInfo, provider: dubbo://192.168.22.53:20889/com.dmsdbj.itoo.teachingManagement.facade.TeacherCourseFacade?anyhost=true&application=teachingManagementweb&check=false&default.check=false&default.group=local&default.timeout=30000&dubbo=2.5.8&generic=false&interface=com.dmsdbj.itoo.teachingManagement.facade.TeacherCourseFacade&methods=queryCourse,queryTeacher,addTeacherCourseMultiple,queryTeacherInfo,queryTeacherCourseClass,updateTeacherCourse,queryTeacherCourse,fuzzyQueryAllCourse,querySemesters,deleteTeacherCourses,addTeacherCourse,queryTeacherCourseList,fuzzyQueryTeacherCourseExport,queryUrlByName,fuzzyQueryTeacher,queryTeacherIdAndName,fuzzyQueryTeacherCourse,findIsInsertTheSame,exportTeacherCourse&pid=784&register.ip=192.168.228.11&remote.timestamp=1525860445921&revision=1.0.5-SNAPSHOT&side=consumer&timestamp=1525868651484, cause: com.alibaba.dubbo.rpc.RpcException: Failed to invoke remote proxy method queryTeachercourseInfo to registry://192.168.22.60:2181/com.alibaba.dubbo.registry.RegistryService?application=teachingManagementservice&dubbo=2.5.8&export=dubbo%3A%2F%2F192.168.22.53%3A20889%2Fcom.dmsdbj.itoo.teachingManagement.facade.TeacherCourseFacade%3Fanyhost%3Dtrue%26application%3DteachingManagementservice%26bind.ip%3D192.168.22.53%26bind.port%3D20889%26default.group%3Dlocal%26default.timeout%3D30000%26dubbo%3D2.5.8%26generic%3Dfalse%26interface%3Dcom.dmsdbj.itoo.teachingManagement.facade.TeacherCourseFacade%26methods%3DqueryCourse%2CqueryTeacher%2CaddTeacherCourseMultiple%2CqueryTeacherInfo%2CqueryTeacherCourseClass%2CupdateTeacherCourse%2CqueryTeacherCourse%2CfuzzyQueryAllCourse%2CquerySemesters%2CdeleteTeacherCourses%2CaddTeacherCourse%2CqueryTeacherCourseList%2CfuzzyQueryTeacherCourseExport%2CqueryUrlByName%2CfuzzyQueryTeacher%2CqueryTeacherIdAndName%2CfuzzyQueryTeacherCourse%2CfindIsInsertTheSame%2CexportTeacherCourse%26pid%3D14206%26revision%3D1.0.5-SNAPSHOT%26side%3Dprovider%26timestamp%3D1525860445921&pid=14206&register=true&registry=zookeeper&timestamp=1525860445921, cause: Not found method “queryTeachercourseInfo” in class com.dmsdbj.itoo.teachingManagement.facade.impl.TeacherCourseFacadeImpl.
com.alibaba.dubbo.rpc.RpcException: Failed to invoke remote proxy method queryTeachercourseInfo to registry://192.168.22.60:2181/com.alibaba.dubbo.registry.RegistryService?application=teachingManagementservice&dubbo=2.5.8&export=dubbo%3A%2F%2F192.168.22.53%3A20889%2Fcom.dmsdbj.itoo.teachingManagement.facade.TeacherCourseFacade%3Fanyhost%3Dtrue%26application%3DteachingManagementservice%26bind.ip%3D192.168.22.53%26bind.port%3D20889%26default.group%3Dlocal%26default.timeout%3D30000%26dubbo%3D2.5.8%26generic%3Dfalse%26interface%3Dcom.dmsdbj.itoo.teachingManagement.facade.TeacherCourseFacade%26methods%3DqueryCourse%2CqueryTeacher%2CaddTeacherCourseMultiple%2CqueryTeacherInfo%2CqueryTeacherCourseClass%2CupdateTeacherCourse%2CqueryTeacherCourse%2CfuzzyQueryAllCourse%2CquerySemesters%2CdeleteTeacherCourses%2CaddTeacherCourse%2CqueryTeacherCourseList%2CfuzzyQueryTeacherCourseExport%2CqueryUrlByName%2CfuzzyQueryTeacher%2CqueryTeacherIdAndName%2CfuzzyQueryTeacherCourse%2CfindIsInsertTheSame%2CexportTeacherCourse%26pid%3D14206%26revision%3D1.0.5-SNAPSHOT%26side%3Dprovider%26timestamp%3D1525860445921&pid=14206&register=true&registry=zookeeper&timestamp=1525860445921, cause: Not found method “queryTeachercourseInfo” in class com.dmsdbj.itoo.teachingManagement.facade.impl.TeacherCourseFacadeImpl.
at com.alibaba.dubbo.rpc.proxy.AbstractProxyInvoker.invoke(AbstractProxyInvoker.java:76)
at com.alibaba.dubbo.config.invoker.DelegateProviderMetaDataInvoker.invoke(DelegateProviderMetaDataInvoker.java:36)
at com.alibaba.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:53)
at com.alibaba.dubbo.rpc.filter.ExceptionFilter.invoke(ExceptionFilter.java:64)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper 1. i n v o k e ( P r o t o c o l F i l t e r W r a p p e r . j a v a : 69 ) a t c o m . a l i b a b a . d u b b o . m o n i t o r . s u p p o r t . M o n i t o r F i l t e r . i n v o k e ( M o n i t o r F i l t e r . j a v a : 75 ) a t c o m . a l i b a b a . d u b b o . r p c . p r o t o c o l . P r o t o c o l F i l t e r W r a p p e r 1.invoke(ProtocolFilterWrapper.java:69)
at com.alibaba.dubbo.rpc.filter.TimeoutFilter.invoke(TimeoutFilter.java:42)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper 1. i n v o k e ( P r o t o c o l F i l t e r W r a p p e r . j a v a : 69 ) a t c o m . a l i b a b a . d u b b o . r p c . p r o t o c o l . d u b b o . f i l t e r . T r a c e F i l t e r . i n v o k e ( T r a c e F i l t e r . j a v a : 78 ) a t c o m . a l i b a b a . d u b b o . r p c . p r o t o c o l . P r o t o c o l F i l t e r W r a p p e r 1.invoke(ProtocolFilterWrapper.java:69)
at com.alibaba.dubbo.rpc.filter.ContextFilter.invoke(ContextFilter.java:61)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper 1. i n v o k e ( P r o t o c o l F i l t e r W r a p p e r . j a v a : 69 ) a t c o m . a l i b a b a . d u b b o . r p c . f i l t e r . G e n e r i c F i l t e r . i n v o k e ( G e n e r i c F i l t e r . j a v a : 132 ) a t c o m . a l i b a b a . d u b b o . r p c . p r o t o c o l . P r o t o c o l F i l t e r W r a p p e r 1.invoke(ProtocolFilterWrapper.java:69)
at com.alibaba.dubbo.rpc.filter.ClassLoaderFilter.invoke(ClassLoaderFilter.java:38)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper 1. i n v o k e ( P r o t o c o l F i l t e r W r a p p e r . j a v a : 69 ) a t c o m . a l i b a b a . d u b b o . r p c . f i l t e r . E c h o F i l t e r . i n v o k e ( E c h o F i l t e r . j a v a : 38 ) a t c o m . a l i b a b a . d u b b o . r p c . p r o t o c o l . P r o t o c o l F i l t e r W r a p p e r 1.invoke(ProtocolFilterWrapper.java:69)
at com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol 1. r e p l y ( D u b b o P r o t o c o l . j a v a : 98 ) a t c o m . a l i b a b a . d u b b o . r e m o t i n g . e x c h a n g e . s u p p o r t . h e a d e r . H e a d e r E x c h a n g e H a n d l e r . h a n d l e R e q u e s t ( H e a d e r E x c h a n g e H a n d l e r . j a v a : 98 ) a t c o m . a l i b a b a . d u b b o . r e m o t i n g . e x c h a n g e . s u p p o r t . h e a d e r . H e a d e r E x c h a n g e H a n d l e r . r e c e i v e d ( H e a d e r E x c h a n g e H a n d l e r . j a v a : 170 ) a t c o m . a l i b a b a . d u b b o . r e m o t i n g . t r a n s p o r t . D e c o d e H a n d l e r . r e c e i v e d ( D e c o d e H a n d l e r . j a v a : 52 ) a t c o m . a l i b a b a . d u b b o . r e m o t i n g . t r a n s p o r t . d i s p a t c h e r . C h a n n e l E v e n t R u n n a b l e . r u n ( C h a n n e l E v e n t R u n n a b l e . j a v a : 81 ) a t j a v a . u t i l . c o n c u r r e n t . T h r e a d P o o l E x e c u t o r . r u n W o r k e r ( T h r e a d P o o l E x e c u t o r . j a v a : 1142 ) a t j a v a . u t i l . c o n c u r r e n t . T h r e a d P o o l E x e c u t o r Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: com.alibaba.dubbo.common.bytecode.NoSuchMethodException: Not found method “queryTeachercourseInfo” in class com.dmsdbj.itoo.teachingManagement.facade.impl.TeacherCourseFacadeImpl.
at com.alibaba.dubbo.common.bytecode.Wrapper9.invokeMethod(Wrapper9.java)
at com.alibaba.dubbo.rpc.proxy.javassist.JavassistProxyFactory$1.doInvoke(JavassistProxyFactory.java:46)
at com.alibaba.dubbo.rpc.proxy.AbstractProxyInvoker.invoke(AbstractProxyInvoker.java:72)
… 26 more

解决过程

1.开始
  问:看到上面的一堆错误信息头疼吗?
  答:小菜自答一下刚开始真的头疼,一堆的英文,实在不想看。那咋办呢?不解决了吗?不能呗!咋办?


2.方向
  小菜找了句关键句“com. alibaba. dubbo. common. bytecode. NoSuchMethodException”放百度上,发现:网上给的答案是:Dubbo的注册中心zookeeper没有启动。于是乎我有了解决问题的方向。


3.仔细看错误信息

◆queryTeachercourseInfo()方法出错
  queryTeachercourseInfo()是我刚才写的接口为啥test类中都测试成功了,swagger上测试方法就出错呢?


◆Failed to invoke the method queryTeachercourseInfo in the service

   无法在服务中调用queryTeachercourseInfo方法。

4.找准原因
  这个时候我才明白,我的test类测试成功那是本地的,前端调接口是找到相应的服务然后找到对应的接口才能调用,我写的接口都没有在服务上构建如何调呢?当然失败啦

小结

  小菜明白出现这些问题足以显示小菜真的很菜,不过通过今天的这些一连串问题我还是学到了很多,首先遇到一长串的error信息要耐心细心看,实在看不懂找关键句查一下,然后找到自己解决问题的方向!小菜fighting!

猜你喜欢

转载自blog.csdn.net/whm18322394724/article/details/80148359