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