我知道对于有经验的程序员来说这可能是个愚蠢的问题。但是我有一个库(http 客户端) ,我的项目中使用的其他一些框架/jar 需要这个库。但是它们都需要不同的主要版本,比如:
httpclient-v1.jar => Required by cralwer.jar
httpclient-v2.jar => Required by restapi.jar
httpclient-v3.jar => required by foobar.jar
类装入器是否足够聪明以某种方式将它们分离?最有可能不是?如果所有三个 jar 中的 Class 是相同的,Classloader 将如何处理这个问题。哪个上膛了,为什么?
Classloader 是只选择一个 jar 还是任意混合类?例如,如果一个类是从 Version-1.jar 加载的,那么从同一个类加载器加载的所有其他类都将进入同一个 jar?
你如何处理这个问题?
是否有一些技巧,以某种方式“合并”罐到“必需的. jar”,使这些被视为“一个单元/包”的 Classloader
,或以某种方式链接?