Звучит как проблема с загрузчиком классов. Я сталкивался с этим раньше, когда столкнулся с конфликтами, возникающими из-за загрузки в MyEclipse разных файлов jar вместо тех, которые, как я думал, были загружены приложением!
Один из способов проверки - запустить Process Explorer и посмотреть файлы JAR, которые загружены в память и где они были созданы.
Чтобы получить более конкретную информацию об ошибке, которую вы получаете, я приведу цитату из спецификации JVM 7 , в которой указана точная ошибка в 5.4.3.1.:
.
5,3. Создание и загрузка
Во время выполнения класс или интерфейс определяется не только его именем, но и парой: его двоичным именем (§4.2.1) и определяющим его загрузчиком классов. Каждый такой класс или интерфейс принадлежит одному пакету времени выполнения. Пакет времени выполнения класса или интерфейса определяется по имени пакета и определяющему загрузчику класса класса или интерфейса.
5.4.3.1. Разрешение класса и интерфейса
Чтобы разрешить неразрешенную символическую ссылку из D в класс или интерфейс C, обозначенный N, выполняются следующие шаги:
Загрузчик определяющего класса D используется для создания класса или интерфейса, обозначенного N. Этот класс или интерфейс - C. Детали процесса приведены в §5.3.
Любое исключение, которое может быть вызвано в результате сбоя при создании класса или интерфейса, может быть выброшено в результате сбоя при разрешении класса и интерфейса.
Если C является классом массива, а его тип элемента является ссылочным типом, то символическая ссылка на класс или интерфейс, представляющий тип элемента, разрешается путем рекурсивного вызова алгоритма в §5.4.3.1.
Наконец, права доступа к C проверяются:
Если C недоступен (§5.4.4) для D, разрешение класса или интерфейса вызывает ошибку IllegalAccessError.
Это условие может возникнуть, например, если C является классом, который первоначально был объявлен как открытый, но был изменен как непубличный после компиляции D.
Если шаги 1 и 2 выполнены успешно, но шаг 3 не выполнен, C по-прежнему действителен и пригоден для использования. Тем не менее, разрешение не удается, и D запрещен доступ к C.
Подводя итог, звучит так, как будто баночка из другой упаковки, то есть из другого загрузчика классов.