Самый простой способ - использовать адаптеры в вашем коде (пакет для каждой поддерживаемой вами версии).
Если версии библиотеки совместимы с более старыми версиями, вы можете скомпилировать их с самыми новыми версиями (так работают драйверы JDBC, которые должны поддерживать версии 2, 3 и 4 JDBC с одним и тем же файлом драйвера), но если это не так, вам придется скомпилировать эти пакеты адаптеров отдельно (в зависимости от их версии библиотеки). Второй способ тоже безопаснее.
Затем вы можете объединить двоичные файлы. Ваша фабрика позаботится о том, чтобы работал только правильный код.
После этого у вас будет фабрика, которая выясняет, какую версию библиотеки использовать (либо проверяя ее каким-либо образом, либо придется настраивать ее явно), и создает экземпляр соответствующего адаптера.
Обновление : Выше предполагается, что вы хотите создать файл JAR, который может работать с различными версиями другого файла JAR, но во время выполнения (в данной установке) будет только одна исправленная версия сторонней библиотеки. Если вам нужно поддерживать несколько версий одних и тех же классов в одной и той же JVM, вам действительно нужно взглянуть на OSGi.