Я знаю, что это может быть глупый вопрос для опытных программистов. Но у меня есть библиотека (клиент http), которая требуется для некоторых других фреймворков / jar-файлов, используемых в моем проекте. Но все они требуют разных основных версий, таких как:
httpclient-v1.jar => Required by cralwer.jar
httpclient-v2.jar => Required by restapi.jar
httpclient-v3.jar => required by foobar.jar
Достаточно ли умен загрузчик классов, чтобы разделить их? Скорее всего нет? Как Classloader справляется с этим, если класс одинаков во всех трех банках. Какой из них загружен и почему?
Classloader подхватывает только одну банку или произвольно смешивает классы? Так, например, если класс загружен из Version-1.jar, все другие классы, загруженные из того же загрузчика классов, все попадут в тот же самый jar?
Как вы справляетесь с этой проблемой?
Есть ли какая-то хитрость, чтобы каким-то образом "включить" банки в "required.jar", чтобы они рассматривались как "один блок / пакет" Classloader
или как-то связаны?