为了账号安全,请及时绑定邮箱和手机立即绑定

Java,Classpath,Classload=>同一个JAR/项目的多个版本

Java,Classpath,Classload=>同一个JAR/项目的多个版本

慕田峪9158850 2019-10-21 16:12:57
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还是有某种联系?
查看完整描述

3 回答

?
萧十郎

TA贡献1815条经验 获得超12个赞

每个类负载准确地选择一个类。通常是第一个被发现的。

OSGi目的是解决同一个JAR的多个版本的问题。春分阿帕奇费利克斯是OSGi的常用开源实现。




查看完整回答
反对 回复 2019-10-22
  • 3 回答
  • 0 关注
  • 446 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信