Java,Classpath,Classload=>同一个JAR/项目的多个版本
我知道这对有经验的程序员来说可能是个愚蠢的问题。但是我有一个库(一个http客户机),这是我的项目中使用的其他一些框架/JAR所需要的。但它们都需要不同的主要版本,如:
httpclient-v1.jar => Required by cralwer.jar
httpclient-v2.jar => Required by restapi.jar
httpclient-v3.jar => required by foobar.jar
类加载器是否有足够的智能来区分它们?很可能不是?如果一个类在所有三个JAR中是相同的,那么ClassLoader是如何处理这个问题的。哪个是装的为什么?
ClassLoader是只拾取一个JAR,还是任意混合类?例如,如果一个类是从Version1.jar加载的,那么从同一个类加载器加载的所有其他类都会进入同一个JAR?
你如何处理这个问题?
是否存在某种方法将这些罐子“合并”到“requd.jar”中,从而使“一个单元/包”被Classloader
还是有某种联系?