Возможно, вы уже делаете это, но в тех случаях, когда класс может находиться или не находиться в пути к классам во время выполнения, я бы порекомендовал использовать ClassLoader для явной загрузки класса, предпринимая соответствующие действия, если класс не найден (как не похоже на ошибку в вашем случае). Это сделает код намного более понятным для чтения, чем что-то вроде:
try {
new MyClass(); // Could potentially thrown a ClassNotFoundException.
// ... yada yada
} catch(ClassNotFoundException ex) {
// Do something else instead.
}
Другой подход, который вы могли бы рассмотреть, - это обернуть ваши вызовы библиотеки в слой адаптера и обеспечить реализацию адаптера в неоперативном режиме в случаях, когда библиотека недоступна, что делает остальную часть кода независимой от того, является ли библиотека присутствует или нет.