昨天在开发过程中,导入同事的一个服务到本地,首先从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版本是否正确,不要搞错了。