affinda / affinda-java

Affinda API client for Java
MIT License
3 stars 2 forks source link

Reliance on Azure Core Netty #1

Open davidb-e4s opened 7 months ago

davidb-e4s commented 7 months ago

Hi,

It's really annoying that we need to try and include the right Netty/ok http azure library in order to get this to run. I've spent 30 minutes trying to match up dependencies.

I'm still getting this issue:

2024-01-27 06:49:25 [org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#0-1] WARN local reactor.util.Loggers$Slf4JLogger: throwIfFatal detected a jvm fatal exception, which is thrown and logged below: java.lang.NoClassDefFoundError: com/azure/core/util/Contexts at com.azure.core.http.okhttp.OkHttpAsyncHttpClient.send(OkHttpAsyncHttpClient.java:75) at com.azure.core.http.HttpPipelineNextPolicy.process(HttpPipelineNextPolicy.java:44) at com.azure.core.http.policy.HttpLoggingPolicy.process(HttpLoggingPolicy.java:111) at com.azure.core.http.HttpPipelineNextPolicy.process(HttpPipelineNextPolicy.java:46) at com.azure.core.http.policy.BearerTokenAuthenticationPolicy.lambda$process$0(BearerTokenAuthenticationPolicy.java:75) at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:45) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:241) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:204) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:155) at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82) at reactor.core.publisher.SerializedSubscriber.onNext(SerializedSubscriber.java:99) at reactor.core.publisher.FluxRepeatWhen$RepeatWhenMainSubscriber.onNext(FluxRepeatWhen.java:143) at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onNext(FluxDoFinally.java:113) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:158) at reactor.core.publisher.MonoMaterialize$MaterializeSubscriber.onNext(MonoMaterialize.java:103) at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2571) at reactor.core.publisher.MonoMaterialize$MaterializeSubscriber.request(MonoMaterialize.java:148) at reactor.core.publisher.MonoFlatMap$FlatMapMain.request(MonoFlatMap.java:194) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.request(MonoPeekTerminal.java:139) at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.request(FluxDoFinally.java:140) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2367) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2241) at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onSubscribe(FluxDoFinally.java:107) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onSubscribe(MonoPeekTerminal.java:152) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onSubscribe(MonoFlatMap.java:117) at reactor.core.publisher.MonoMaterialize$MaterializeSubscriber.onSubscribe(MonoMaterialize.java:90) at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:55) at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) at reactor.core.publisher.MonoFromFluxOperator.subscribe(MonoFromFluxOperator.java:83) at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) at reactor.core.publisher.Mono.subscribe(Mono.java:4512) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:265) at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) at reactor.core.publisher.Mono.subscribe(Mono.java:4512) at reactor.core.publisher.Mono.block(Mono.java:1727) at com.affinda.api.client.AffindaAPI.createDocument(AffindaAPI.java:2905)

davidb-e4s commented 7 months ago

Finally got it to run following your sample

    <dependency>
        <groupId>com.affinda.api</groupId>
        <artifactId>affinda-api-client</artifactId>
        <version>${affinda-api-client.version}</version>
    </dependency>
    <dependency>
        <groupId>com.microsoft.rest</groupId>
        <artifactId>client-runtime</artifactId>
        <version>1.7.14</version>
    </dependency>
    <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>azure-client-runtime</artifactId>
        <version>1.7.14</version>
    </dependency>
    <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>azure-client-authentication</artifactId>
        <version>1.7.14</version>
    </dependency>
    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-identity</artifactId>
        <version>1.5.0</version>
    </dependency>
    <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-all</artifactId>
        <version>4.1.73.Final</version>
    </dependency>

But as a customer/user of your java API lib I don't really want to manage all these dependencies every time I try to upgrade your lib. Please include everything you need in your pom.