Java,类路径,类加载=>同一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 中的类都相同。加载了哪一个,为什么?
类加载器是只拾取一个 jar,还是任意混合类?例如,如果一个类是从版本 1 加载的.jar,那么从同一类加载器加载的所有其他类都将进入同一个 jar?
你如何处理这个问题?
有没有一些技巧可以以某种方式将罐子“合并”到“必需.jar”中,以便被视为“一个单元/包”,或者以某种方式链接?Classloader