Wiem, że to może być głupie pytanie dla doświadczonych programistów. Ale mam bibliotekę (klienta http), której wymagają niektóre inne frameworki / pliki JAR używane w moim projekcie. Ale wszystkie wymagają różnych głównych wersji, takich jak:
httpclient-v1.jar => Required by cralwer.jar
httpclient-v2.jar => Required by restapi.jar
httpclient-v3.jar => required by foobar.jar
Czy Classloader jest wystarczająco inteligentny, aby je jakoś rozdzielić? Najprawdopodobniej nie? W jaki sposób Classloader radzi sobie z tym w przypadku, gdy klasa jest taka sama we wszystkich trzech słoikach. Który jest załadowany i dlaczego?
Czy Classloader pobiera tylko dokładnie jeden słoik, czy też dowolnie miesza klasy? Na przykład, jeśli klasa jest ładowana z pliku Version-1.jar, wszystkie inne klasy ładowane z tego samego modułu ładującego klasy trafią do tego samego pliku jar?
Jak radzisz sobie z tym problemem?
Czy jest jakaś sztuczka, aby w jakiś sposób „włączyć” słoiki do pliku „required.jar”, tak aby były one postrzegane jako „jedna jednostka / opakowanie” Classloader
lub w jakiś sposób połączone?