Есть ли способ импортировать конкретную версию Java SDK в проект с несколькими версиями одного SDK? - PullRequest
0 голосов
/ 01 октября 2019

Из-за причин я не могу просто обновить старую версию aws sdk, с которой я работаю, но мне также нужны некоторые новые вещи, которые есть в более поздней версии.

Проблема в том, что, если поставить обе версии SDK проекта, я получаю «java.lang.NoSuchMethodError», потому что я думаю, что он пытается использовать старую версию SDK. Если я удаляю старый и просто использую обновленный, он работает нормально. Есть ли способ сохранить обе версии sdk и указать моему java-классу, какой из них импортировать исключительно?

1 Ответ

0 голосов
/ 01 октября 2019

Есть несколько способов, но они довольно неприятные.

Возможно, «более правильный» подход заключается в том, чтобы использовать пользовательский загрузчик классов - подробности см. В этом ответе. Однако это не совсем просто и может привести к странным результатам.

Более простой, но несколько более неприятный подход - получить исходный код обоих SDK (если он доступен) и переименовать пакеты. Например, если у нас есть sdk_v1 и sdk_v2, мы можем переименовать пакеты в com.example.sdk.v1 и com.example.sdk.v2. Если нет конфликта имен пакетов, нет проблем с использованием двух разных SDK, даже в одном классе - просто используйте полностью квалифицированный импорт (см ответ ):

com.example.sdk.v1.SomeClass.someFunc() не будет сталкиваться с com.example.sdk.v2.SomeClass.someFunc()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...