关于jar包引用的一个问题?

通过ClassLoader可以做到 前提是的确值得你这样做(具体参照Tomcat是如何做到不同的webapp的隔离)
■网友
比较标准化的做法是osgi,但其实呢osgi也挺复杂的。。。比较省事的办法是自己写classloader,但是呢,你需要非常了解java的class loader机制并小心的设计你的load策略。
■网友
如果 AC 也是开源的,去找找相应的升级版。如果不是,就用一些 decompile工具 jgui 反编译 看看 A依赖B 的方法是否很复杂。如果不复杂的话,字节写一个同名类替代掉,功能要么 自己实现,要么 delegate 给D的实现类。如果做不到,单个替换掉 A里的那个调用类 也行。classloader虽然可以解决同名类加载问题,但是不能解决类之间相互依赖。弄太多classloader,会把自己弄晕的,也不好维护。同名类或者接口替代,其实蛮常见的。 用过 slf4j就知道了。最初 common logging被人诟病的一个问题就是 会因为classloader造成内存泄露或者无效引用。


    推荐阅读