背景:
實現一個簡單的功能,需要用到jedis的jar包連接Redis。在之前便已經有使用jedis,它的版本比較舊,是2.1的。而新實現的功能,在編碼的時候使用的是2.8的。在開發環境完成單元測試后,將編譯好的class文件拷貝更新至測試環境。因種種原因,導致功能無法運行,排查后,覺得可能是jedis版本問題。於是,將jedis的版本重新降為2.1。運行,開始報如題錯誤。
報錯:
java.lang.NoSuchMethodError
PS:報這個錯誤的方法或者類明明存在,但是系統就是報這個錯,百思不得其解。
解決方案:
1、Jar包沖突問題,看看是不是Jar包版本不兼容。
2、編譯問題。跟前一條有關系,即因為編譯時的jar包版本跟運行時的jar包版本不一致,從而導致報錯。(ps:我遇到的就是這個問題,當時弄昏頭腦了。)
3、這個類或者方法的確不存在。
參考文獻:
javaweb在生產環境中,某個方法確實存在,但是總是報java.lang.NoSuchMethodError錯誤
使用Jedis:java.lang.NoSuchMethodError
java.lang.NoSuchMethodError: java.lang.Long