gRPC Java cannot find a NameResolver when using in OSGi bundle(在OSGi包中使用时,GRPC Java找不到NameResolver)
问题描述
我正在尝试在OSGi包中使用Java GRPC。我使用的是maven和org.apache.servicymx.bundles.grpc-1.30.2_1,它是从1.30.2_1的发布标记本地构建的。
OSGi包启动时没有任何问题,但在运行时创建了一个ManageChannel时,我得到了一个java.lang.IllegalArgumentException: cannot find a NameResolver for localhost:4435
异常。
堆栈跟踪的相关部分
java.lang.IllegalArgumentException: cannot find a NameResolver for localhost:4435
at io.grpc.internal.ManagedChannelImpl.getNameResolver(ManagedChannelImpl.java:724) ~[org.apache.servicemix.bundles.grpc-1.30.2_1.jar:?]
at io.grpc.internal.ManagedChannelImpl.<init>(ManagedChannelImpl.java:606) ~[org.apache.servicemix.bundles.grpc-1.30.2_1.jar:?]
at io.grpc.internal.AbstractManagedChannelImplBuilder.build(AbstractManagedChannelImplBuilder.java:518) ~[org.apache.servicemix.bundles.grpc-1.30.2_1.jar:?]
当我在运行时调试GRPC代码时,我可以看到没有添加NameResolver。我认为这可能是类加载问题。
这是来自Apache Felix插件的配置的一部分
<Import-Package>
...,
org.apache.servicemix.bundles.grpc.*; version="1.30.2_1",
io.grpc*;
</Import-Package>
<Embed-Dependency>org.apache.servicemix.bundles.grpc;scope=compile</Embed-Dependency>
渠道建设代码(此代码使用io.grpc.netty.shaded.io.grpc.netty.NettyChannelBuilder
)
ManagedChannel channel = NettyChannelBuilder.forAddress("localhost", 4435)
.usePlaintext()
.build();
我只需要让GRPC客户端在OSGi包中工作。 我们非常感谢您在这方面提供的任何帮助。
推荐答案
在META-INF/services
中添加相关的GRPC提供程序成功。
这篇关于在OSGi包中使用时,GRPC Java找不到NameResolver的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在OSGi包中使用时,GRPC Java找不到NameResolver
- 将 Java Swing 桌面应用程序国际化的最佳实践是什么? 2022-01-01
- 如何使 JFrame 背景和 JPanel 透明且仅显示图像 2022-01-01
- 如何指定 CORS 的响应标头? 2022-01-01
- java.lang.IllegalStateException:Bean 名称“类别"的 BindingResult 和普通目标对象都不能用作请求属性 2022-01-01
- 获取数字的最后一位 2022-01-01
- 转换 ldap 日期 2022-01-01
- 在 Java 中,如何将 String 转换为 char 或将 char 转换 2022-01-01
- Eclipse 的最佳 XML 编辑器 2022-01-01
- GC_FOR_ALLOC 是否更“严重"?在调查内存使用情况时? 2022-01-01
- 未找到/usr/local/lib 中的库 2022-01-01