2020-03-16 Java新手 遇到的坑 dubbo打包發(fā)布成功 API也成功點出方法來,http方式也能正常訪問核心方法,但是API調(diào)用一直報找不到該方法的錯誤

解決 java.lang.NoSuchMethodError的問題

1、操作

項目重新打包后,程序就找不到對應的方法

Handler dispatch failed; nested exception is java.lang.NoSuchMethodError

3、原因(可能有多種原因,但下面是我這次導致錯誤的原因)

有2個不同版本的jar同時存在

注:項目的打包都是maven的package,結(jié)果發(fā)現(xiàn)這種方式不會把同名的另外版本的jar給clean掉,所以之后要先clean再package

4.解決方法

刪除掉老版本的jar


其間做過的事情:

1.懷疑傳參 的時候是否需要引入標注 是否對應的相同類型 2.是否別處核心在啟動中 3.差錯提示中路徑中多出一個大寫“L” 例如:Lcom/citydelivery/deliveryService/DTO/Response;]由于自己java開發(fā)經(jīng)驗不多 看到這個提示懷疑自己是否不注意 在某個地方碰到鍵盤”L“ 全局搜索并沒有找到有錯的地方 然后接下來堆棧跟蹤:java.lang.NoSuchMethodError:com.citydelivery.deliveryService.ExpressStockService.getWaitSignWaybillList(Ljava/lang/String;)

解決方法

Java使用這些字母在內(nèi)部對方法簽名進行編碼.例如,“L”宣布以下“對象”,其由完整的類名稱指定,后跟分號. “V”應該在括號前面,并描述一種返回類型“void”.

舉個例子:

java.lang.NoSuchMethodError:

org.springframework.web.context.ContextLoader

.getCurrentWebApplicationContext()Lorg/springframework/web/context/WebApplicationContext;

它說,org.springframework.web.context.ContextLoader類中沒有方法調(diào)用getCurrentWebApplicationContext,它不接受任何參數(shù)[由()表示),并返回一個名為“org / springframework / web / context / WebApplicationContext(由’;’關閉).

編輯:所有代碼的列表在JNI specs表3.2中.

EDIT2:更加有用:JVM規(guī)范的第4.3 Descriptors節(jié)包含格式和代碼的完整參考.

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容