?般来说,在?较?的项??,依赖冲突这种事情?乎是?法避免的。?般来说,这种问题的解决?法?多是下??种:
?的代码,使?“??包名的前缀+实际包名”来进?隔离。
?。
响。这种?法其实很像是容器技术的阉割版,逻辑上很像容器,对jar包再做?层隔离控制。不过这种?式?般不是很优雅,有点像hack,因此?前看起来没什么像样的完整解决?案。稍微像样点的?概就是阿?最近搞的Sofa ark,功能挺强?,但是?起来也?较复杂,对jar包的侵?性也很强。
各个?法其实都不是很?便,那就换?个思路,既然避免问题?较困难,那就尽量早点暴露问题。编译错误或者启动错误肯定会?运?时不知道啥时候报错更让?放?。因此根据 fail fast 原则,我们应当保证在不增加沟通成本的情况下,快速暴露问题。分析
既然很多依赖冲突问题在编译、打包时都不会报错,那就只能尽量在启动时报错了。因此对于?个稳定的组件来说,做?个运?时的启动检查也就有?定的合理性了。
为了能在运?时进?依赖检查,肯定要想办法在运?时获得某个包的版本号。那如何在打包时把版本信息写在jar包?,然后再读出来呢?这就要从JarFile的加载说起了。
原文:https://www.cnblogs.com/mscm/p/13139005.html