昨天在開發過程中,導入同事的一個服務到本地,首先從git上把項目拉下來,然后使用maven導入eclipse,然后build。
build的過程中在項目的一個測試類里面報錯 java.lang.NoClassDefFoundError org/bosn/xxxxx ,然后當時不知道怎么解決問題,於是把test關閉之后繼續build,
build success!
然后啟動項目,沒有出現問題,正常啟動,日志信息沒有報錯,不過在我使用postman訪問接口的時候,無論哪一接口都在報錯 java.lang.NoClassDefFoundError org/bosn/xxxxx;
所以沒有辦法,只好一步一步去找,在Maven本地倉庫也有這個class,為什么不對呢,最后經過一下午的奮戰,終於找到了原因,因為工具包的版本不一致。
因為我其他的服務依賴的工具jar版本是0.0.1的,但是這個服務缺依賴的是0.0.2的jar,這點是我沒有想到的,因為jar是工具服務生成的,所以maven默認可識別。
所以導致雖然jar里面有這個class但是並不是這個版本的,所以導致NoClassDefFoundError 的錯誤。
總結:
以后遇到NoClassDefFoundError ,可以先去查看依賴jar版本是否正確,不要搞錯了。