當思路如泉涌般、很流程的寫完一段代碼,點擊Run看看執行結果的時候,Duang的一下輸出了一串「Caused by: java.lang.NoSuchMethodError: xxx/xxx/xxx」,瞬間美好的心情就沒了。java
左看看又看看,有這個方法!json
打開Google根據關鍵字探索,搜出的結果是jar衝突了,而衝突的jar的類中沒有這個方法,致使找不到這個方法。網上有不少各路大神的解決辦法,有用開源工具檢查的,有輸出依賴樹結構查找的,用起來都不是很順手。工具
總結了一個簡單有效的方法,在IDEA中,將報錯方法所在類的全類名寫出來,例如輸出的錯誤信息是「Caused by: java.lang.NoSuchMethodError: org/json/JSONObject.putOnce」,就在IDEA中輸入org.json.JSONObject,而後到這個JSONObject類中查看是否有putOnce方法,必定沒有,接着查看這個類所在的jar名稱,將它從依賴列表中排除掉。而後,再回到剛剛輸入的界面,再次進入JSONObject類,再次查看是否有putOnce方法,若是也沒有將它從依賴列表中排除掉,直到找到存在putOnce方法的類,保留這個類便可。get
上面說到在IDEA中輸入類的全類名,其實就是想找到所在的jar,也能夠在IDEA中打印出org.json.JSONObject.class.getProtectionDomain().getCodeSource()的結果,結果便是類所在的jar。io