So che questa potrebbe essere una domanda stupida per programmatori esperti. Ma ho una libreria (un client http) richiesta da alcuni degli altri framework / jar utilizzati nel mio progetto. Ma tutti richiedono diverse versioni principali come:
httpclient-v1.jar => Required by cralwer.jar
httpclient-v2.jar => Required by restapi.jar
httpclient-v3.jar => required by foobar.jar
Il classloader è abbastanza intelligente da separarli in qualche modo? Probabilmente no? Come lo gestisce il Classloader, nel caso in cui una classe è la stessa in tutti e tre i jar. Quale è caricato e perché?
Il Classloader preleva solo esattamente un vaso o mescola le classi in modo arbitrario? Quindi, ad esempio, se una classe viene caricata dalla versione 1.jar, tutte le altre classi caricate dallo stesso classloader andranno tutte nello stesso jar?
Come gestisci questo problema?
C'è qualche trucco per "incorporare" in qualche modo i barattoli in "required.jar" in modo che siano visti come "un'unità / pacchetto" da Classloader
, o in qualche modo collegati?