Сторонние библиотеки часто включаются сервером приложений, на который вы развертываете, и классифицируют с библиотеками, включенными в ваше приложение. До сих пор я занимался этим самым простым и хакерским способом: удалением библиотек на сервере приложений.
В нашем случае все в порядке, никто не полагается на сервер приложений для предоставления им каких-либо библиотек. Но если бы я запускал свое приложение вместе со множеством приложений других людей, что опять-таки могло бы зависеть от библиотек, включенных сервером приложений, это не было бы решением.
Как это предполагается должно быть решено (чисто)? Как дела?
Пример проблемы может быть такой:
вы создаете приложение jax-rs, используя cxf, hibernate и jackson, и развертываете на glassfish 2.1.1. glassfish предоставляет библиотеку asm 3.1, но это приводит к конфликтам в спящем режиме с использованием несовместимой версии 1.5. Точно так же приложению требуется Jackson 1.8.2 (из-за исправления ошибки), но Glassfish 2.1.1 поставляется с версией 0.9. БУМ. Есть ли способ исправить это, кроме простого удаления проблемных библиотек?