Java,Classpath,Classloading =>同一个jar /项目的多个版本

问题描述 投票:109回答:5

我知道这对有经验的程序员来说可能是一个愚蠢的问题。但我有一个库(一个http客户端),我的项目中使用的一些其他框架/ jar需要。但所有这些都需要不同的主要版本,如:

httpclient-v1.jar => Required by cralwer.jar
httpclient-v2.jar => Required by restapi.jar
httpclient-v3.jar => required by foobar.jar

类加载器是否足够智能以某种方式将它们分开?很可能不是吗?如果Class在所有三个jar中都相同,Classloader如何处理这个问题。加载哪一个,为什么?

类加载器是仅仅拾取一个罐子还是任意混合类?因此,例如,如果从Version-1.jar加载一个类,那么从同一个类加载器加载的所有其他类都将进入同一个jar?

你怎么处理这个问题?

是否有一些技巧以某种方式将罐子“合并”到“required.jar”中,以便被Classloader视为“一个单元/包”,或者以某种方式链接?

java jar classpath classloader
5个回答
© www.soinside.com 2019 - 2024. All rights reserved.