Я хотел бы добавить один ответ на этот пост. Сегодня я столкнулся с подобной проблемой и нашел, что основной причиной является еще одна зависимая бана, которая была внутри, используя более старую версию Jersey / JAX-RS.
Мой POM до исправления был:
<jersey.version>2.17</jersey.version>
...
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>com.ci.wrapper</groupId>
<artifactId>client-wrapper</artifactId>
<version>${clients-wrapper.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.api.commons</groupId>
<artifactId>transferobjects</artifactId>
<version>3.0.2</version>
</dependency>
Проблема заключалась в «com.ci.wrapper» и «com.api.commons». Они включили 2 разных JAR's BraveJersey и org.apache.cxf.cxf-rt-frontend-jaxrs (2.5.1), которые использовали версии Джерси и JAX-RS 1.X.
После исключения вложенные jar и добавление новой версии BraveJersey2 / org.apache.cxf.cxf-rt-frontend-jaxrs (3.1.5), она была решена.
<dependency>
<groupId>com.api.commons</groupId>
<artifactId>transferobjects</artifactId>
<version>3.0.2</version>
<exclusions>
<exclusion>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
<groupId>org.apache.cxf</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
<version>3.1.5</version>
</dependency>
<dependency>
<groupId>com.ci.wrapper</groupId>
<artifactId>client-wrapper</artifactId>
<version>${clients-wrapper.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
<artifactId>brave-jersey</artifactId>
<groupId>com.github.kristofa</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.github.kristofa</groupId>
<artifactId>brave-jersey2</artifactId>
<version>2.4.2</version>
</dependency>
Если вы столкнулись с аналогичным вопрос, пожалуйста, проверьте, может ли проект или фляга использовать несовместимую версию Jersey / Jax-RS.
Вам необходимо заключить вызов метода subscribe
в блок
suspendCancellableCoroutine< RxBleDevice>{ cont ->
//your code here
}
. В реализации обратного вызова subscribe
используйте cont.resume()
для возобновления сопрограммы с результатом и cont.resumeWithException
для возобновления ее с ошибкой.
Вы также можете связать отмену между сопрограммой и сканированием. Подробнее см. cont.invokeOnCancellation { }
.
API, который вы вызываете, выглядит как Rx, может быть, один из этих модулей поможет https://github.com/Kotlin/kotlinx.coroutines/blob/master/reactive/README.md