今天碰到一個java.lang.NoSuchMethodException的異常。基本解決思路是:
1、檢查類所在jar包的版本是否正確。
2、檢查是否有jar包沖突,比如加載了多個版本的xxx.jar。
如果是maven工程,可以通過mvn dependency:tree來顯示工程的依賴樹。
3、如果還無法定位,可以通過以下方法來找到工程實際加載的類屬於哪個jar包。
1 Class<?> clazz = Class.forName("com.xxx.xxx.XXX"); # 類名
2 CodeSource cs = clazz.getProtectionDomain().getCodeSource();
3 String location = cs.getLocation().getPath();
4 System.out.println(location);
以上代碼沒有帶異常處理,自己加。
通過以上方法判斷實際加載的類是否符合預期,再做處理。