Eu sei que essa pode ser uma pergunta boba para programadores experientes. Mas eu tenho uma biblioteca (um cliente http) que alguns dos outros frameworks / jars usados em meu projeto requerem. Mas todos eles exigem diferentes versões principais, como:
httpclient-v1.jar => Required by cralwer.jar
httpclient-v2.jar => Required by restapi.jar
httpclient-v3.jar => required by foobar.jar
O carregador de classe é inteligente o suficiente para separá-los de alguma forma? Mais provável que não? Como o Classloader lida com isso, caso uma Classe seja a mesma em todos os três jars. Qual está carregado e por quê?
O Classloader só pega exatamente um jar ou mistura classes arbitrariamente? Portanto, por exemplo, se uma classe for carregada da versão 1.jar, todas as outras classes carregadas do mesmo carregador de classe irão para o mesmo jar?
Como você lida com esse problema?
Existe algum truque para de alguma forma "incorporar" os frascos no "required.jar" de forma que eles sejam vistos como "uma unidade / pacote" pelo Classloader
, ou de alguma forma vinculados?