относящиеся: управление конфликтом на пути к классам Java
также связано: Java Classloader - как ссылаться на разные версии jar
У меня есть два jar-файла, в каждом из которых есть своя зависимость, включенная в jar-файл, но оба они в другой версии.
a.jar -> has c.class/c2.class/c3.class/.. version 0.3 in it
b.jar -> has c.class/c2.class/c3.class/.. version 1.0 in it
Но когда я попытался использовать их обоих в одном проекте. Кажется, он использует c.class только из одной банки, но не из другой. Это оказывается проблемой, поскольку API сильно отличается в обеих версиях. Есть ли какой-либо способ сказать им использовать c.class только из его соответствующей фляги? Я не могу изменить a.jar и b.jar здесь.
кстати. После быстрого поиска кажется, что люди предлагают OSGI и загрузчик классов, но я почти ничего не знаю об этом, какой самый быстрый способ справиться с этим? (уже читал немного о загрузчике классов, но все еще не уверен, как его использовать).
РЕДАКТИРОВАТЬ: Я предпочитаю использовать оригинальную библиотеку, с которой они связаны, так как я уже оценил эти два jar по отдельности (они являются инструментами для анализа текста с одним и тем же бэкэндом, но версия сильно отличается). Теперь я хочу объединить их обоих в одну и попытаться максимально приблизить среду к оригинальной.
Прямо сейчас я следую решению Тревиса Уэбба, но все еще удивляюсь, почему баночка не разделяет оба набора библиотек.