Android-приложение генерирует NoClassDefFoundError в org.osgi.framework.SynchronousBundleListener - PullRequest
0 голосов
/ 19 марта 2019

Используя Android Studio, мое приложение использует библиотеку, которая внутренне использует "org.glassfish.jersey" для выполнения HTTP-запросов. Когда мое приложение запускается, оно постоянно генерирует следы стека, что говорит о том, что оно не может разрешить "org.osgi.framework.SynchronousBundleListener"

I / zygote: Отклонение повторной инициализации в ранее не пройденном классе java.lang.Class: java.lang.NoClassDefFoundError: Не удалось разрешить: Lorg / OSGi / рамки / SynchronousBundleListener

at org.glassfish.jersey.internal.ServiceFinder org.glassfish.jersey.internal.ServiceFinder.find (java.lang.Class) (ServiceFinder.java:288)

at void org.glassfish.jersey.client.ClientConfig $ State. (Org.glassfish.jersey.client.JerseyClient) (ClientConfig.java:152)

К сожалению, я не понимаю, что такое OSGI. (Я нашел страницы, которые говорят о «связках» OSGI и компонентной модели OSGI, но мне не нужно напрямую использовать OSGI.) Это просто зависимость, которая необходима и отсутствует.

Мой проект использует файл "build.gradle" для объявления зависимостей, например, кажется, что моя зависимость от "org.glassfish.jersey" объявлена ​​со следующим:

implementation 'org.glassfish.jersey.core:jersey-client:2.17', {
   exclude group: 'org.glassfish.hk2.external'
}

Но мой файл "build.gradle" не упоминает "osgi" как зависимость.

Как я могу сделать классы "org.osgi.framework" доступными для библиотеки, которая нуждается в них? Есть ли строка implementation, которую я мог бы добавить в свой файл "build.gradle", или внешний jar-файл, который мне нужно скачать?

...