java.lang.NoSuchMethodError: com.xxx.xxx.xxx.po.xxxPo.setXXX(D)V

          近日修改一個功能,很簡單,就修改了這個功能的PO實體類的一個屬性的數據類型,把double改成Double了,get,set方法也進行了修改,然後把PO的class給替換到正式了。然後就開始出莫名其妙的問題,後臺日誌沒報任何錯,但是程序沒有走完,沒有返回任何信息。我就開始捋代碼啊,捋了幾遍沒發現有什麼不對勁的代碼啊,很頭疼。最後在Tomcat的日誌文件裏發現了錯誤,java.lang.NoSuchMethodError: com.xxx.xxx.xxx.po.xxxPo.setXXX(D)V。雖然找到了錯誤,可是我還是不知道哪裏錯了,PO的set方法明明就有啊。再次替換PO的class還是不行。最後才發現問題在哪,是new這個PO的manager實現類沒有一起替換,雖然它沒有修改。然後把manager替換之後,問題解決。

           業務場景是這樣的,保存一張表單,controller,manager,具體保存方法是在manager裏寫的,manager裏new了一個PO對象,set值,然後保存。

          錯誤原因是:我的理解是這樣的,manager是依賴PO的,我沒有替換manager,所以manager指向的是老的PO,可是我替換了PO的class,所以它找不到了,所以應該把manager也替換成編譯後的。

          把這個經歷記錄一下,讓我自己記憶清晰一點,也給頭疼此問題的人提供一個排除錯誤的方法。

發佈了56 篇原創文章 · 獲贊 63 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章