Я пытаюсь запустить 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 на самом деле рассматривает здесь?