Не удается разрешить зависимость maven с помощью beam-runners-google-cloud-dataflow-java и bigtable-client-core - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь запустить Java-код из проекта Maven, в котором используются оба луча-runners-google-cloud-dataflow-java и bigtable-client-core, и я не могу заставить его должным образом согласовать зависимости между этими двумя.Когда я запускаю и пытаюсь создать BigtableDataClient, я получаю следующую ошибку:

java.lang.NoSuchFieldError: TE_HEADER
    at io.grpc.netty.shaded.io.grpc.netty.Utils.<clinit> (Utils.java:74)
    at io.grpc.netty.shaded.io.grpc.netty.NettyChannelBuilder.<clinit> (NettyChannelBuilder.java:72)
    at io.grpc.netty.shaded.io.grpc.netty.NettyChannelProvider.builderForAddress (NettyChannelProvider.java:37)
    at io.grpc.netty.shaded.io.grpc.netty.NettyChannelProvider.builderForAddress (NettyChannelProvider.java:23)
    at io.grpc.ManagedChannelBuilder.forAddress (ManagedChannelBuilder.java:39)
    at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.createSingleChannel (InstantiatingGrpcChannelProvider.java:242)
    at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.createChannel (InstantiatingGrpcChannelProvider.java:198)
    at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.getTransportChannel (InstantiatingGrpcChannelProvider.java:185)
    at com.google.api.gax.rpc.ClientContext.create (ClientContext.java:160)
    at com.google.cloud.bigtable.data.v2.stub.EnhancedBigtableStub.create (EnhancedBigtableStub.java:151)
    at com.google.cloud.bigtable.data.v2.BigtableDataClient.create (BigtableDataClient.java:138)
    at com.google.cloud.bigtable.data.v2.BigtableDataClient.create (BigtableDataClient.java:130)
 ...

Я могу только заключить, что это связано с проблемой конфликта версий в соответствующих библиотеках (либо grpc-netty, либо grpc-).Netty-заштрихованы);Я использую 1.17 для grpc-netty и 1.23 для grpc-netty-shaded.Я попытался использовать dependencyManagement для принудительного использования версии 1.23.0 для grpc-netty и grpc-netty-shaded, а затем попробовал 1.17 для обоих, но это не помогло.Я также пытался использовать более ранние версии Beam Runners и bigtable-client-core, но это тоже не помогает.

Соответствующие зависимости Maven:

    <dependency>
       <groupId>org.apache.beam</groupId>
       <artifactId>beam-runners-google-cloud-dataflow-java</artifactId>
       <version>2.15.0</version>
    </dependency>

    <dependency>
      <groupId>com.google.cloud.bigtable</groupId>
      <artifactId>bigtable-client-core</artifactId>
      <version>1.12.1</version>
    </dependency>

Iпосмотрите на код для Utils.java (https://github.com/grpc/grpc-java/blame/master/netty/src/main/java/io/grpc/netty/Utils.java),, и я не вижу никаких доказательств того, что я использовал бы любую более раннюю версию, которая не имела бы этой константы (она была там с версии 1.7).

Я полностью сбит с толку, в чем проблема. Как я могу определить конфликт зависимостей? Есть ли другой способ найти какую-то версию класса, которую Maven на самом деле рассматривает здесь?

...