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