Затененная банка для коннектора Kafka с использованием grpc-netty-shaded не работаетJAVA

Программисты JAVA общаются здесь
Anonymous
Затененная банка для коннектора Kafka с использованием grpc-netty-shaded не работает

Сообщение Anonymous »

Я создаю затененный jar-файл, который хочу запустить в кластере Kafka Connect. Этот jar представляет собой простой клиент gRPC, который принимает сообщения Kafka из темы, а затем отправляет их на сервер. Однако, когда я запускаю свой jar в кластере Kafka Connect, он выдает следующую ошибку:

Код: Выделить всё

java.util.ServiceConfigurationError: io.grpc.ManagedChannelProvider: io.grpc.netty.NettyChannelProvider not a subtype
at java.base/java.util.ServiceLoader.fail(ServiceLoader.java:593)
at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.java:1244)
at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.java:1273)
at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1309)
at java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1393)
at io.grpc.ServiceProviders.loadAll(ServiceProviders.java:67)
at io.grpc.ManagedChannelRegistry.getDefaultRegistry(ManagedChannelRegistry.java:101)
at io.grpc.ManagedChannelProvider.provider(ManagedChannelProvider.java:43)
at io.grpc.ManagedChannelBuilder.forAddress(ManagedChannelBuilder.java:44)
at com.pinax.kafka.paymentgateway.connect.sink.PaymentGatewayClient.start(PaymentGatewayClient.java:46)
at com.pinax.kafka.paymentgateway.connect.sink.PaymentGatewaySinkTask.start(PaymentGatewaySinkTask.java:29)
at org.apache.kafka.connect.runtime.WorkerSinkTask.initializeAndStart(WorkerSinkTask.java:333)
at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:227)
at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:284)
at org.apache.kafka.connect.runtime.isolation.Plugins.lambda$withClassLoader$7(Plugins.java:339)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
Я действительно не понимаю, в чем здесь проблема. Кажется, grpc-netty-shaded не может найти тип, который обычно должен там быть. Вот что я делаю в своем pom.xml:

Код: Выделить всё


     x s i : s c h e m a L o c a t i o n = & q u o t ; h t t p : / / m a v e n . a p a c h e . o r g / P O M / 4 . 0 . 0   h t t p : / / m a v e n . a p a c h e . o r g / x s d / m a v e n - 4 . 0 . 0 . x s d & q u o t ; & g t ; < b r   / >     & l t ; m o d e l V e r s i o n & g t ; 4 . 0 . 0 & l t ; / m o d e l V e r s i o n & g t ; < b r   / > < b r   / >     & l t ; g r o u p I d & g t ; c o m . p i n a x . k a f k a . p a y m e n t g a t e w a y . c o n n e c t . s i n k & l t ; / g r o u p I d & g t ; < b r   / >     & l t ; a r t i f a c t I d & g t ; p i n a x - p a y m e n t - g a t e w a y - k a f k a - c o n n e c t & l t ; / a r t i f a c t I d & g t ; < b r   / >     & l t ; v e r s i o n & g t ; 0 . 0 . 1 & l t ; / v e r s i o n & g t ; < b r   / > < b r   / >     & l t ; n a m e & g t ; p i n a x - p a y m e n t - g a t e w a y - k a f ka-connect


UTF-8
17
17
1.66.0





io.grpc
grpc-bom
${grpc.version}
pom
import








org.apache.kafka
connect-api
3.7.0
provided



com.google.protobuf
protobuf-java-util
4.28.0




io.grpc
grpc-netty-shaded
runtime


io.grpc
grpc-stub


io.grpc
grpc-protobuf




org.apache.tomcat
annotations-api
6.0.53
provided








kr.motd.maven
os-maven-plugin
1.7.1






org.apache.maven.plugins
maven-shade-plugin
3.6.0


package

shade


false









org.xolstice.maven.plugins
protobuf-maven-plugin
0.6.1

com.google.protobuf:protoc:3.25.3:exe:${os.detected.classifier}
grpc-java
io.grpc:protoc-gen-grpc-java:1.66.0:exe:${os.detected.classifier}
false
${basedir}/src/main/java




compile
compile-custom









Таким образом, он создает два jar-файла, один из которых является jar-файлом со всеми зависимостями.
Я уже давно застрял в этой проблеме, даже пытался использовать grpc-netty без затенения, но когда я декомпилирую jar, всегда кажется, что используется grpc-netty-shaded.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ot-working

Вернуться в «JAVA»