我们已经将DataAccess逻辑转移到了Microservice,目前它是用C++实现的gRPC,我们能够在C#客户端和C++客户端中使用它。
现在,我们必须在Matlab客户端(遗留(中使用此DataAccess grpc。因此,我试图找到一种从Matlab访问gRPC的方法,但发现没有官方支持。
我找到了两个解决方案,
使用Java
我已经按照这个帖子中的建议进行了尝试。我已经使用Eclipse创建了一个示例grpc客户端java。但当我试图从matlab访问该类/方法时,我面临以下问题,
Java exception occurred:
java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;CLjava/lang/Object;)V
at io.grpc.Metadata$Key.validateName(Metadata.java:630)
at io.grpc.Metadata$Key.<init>(Metadata.java:638)
at io.grpc.Metadata$Key.<init>(Metadata.java:568)
at io.grpc.Metadata$AsciiKey.<init>(Metadata.java:743)
at io.grpc.Metadata$AsciiKey.<init>(Metadata.java:738)
at io.grpc.Metadata$Key.of(Metadata.java:594)
at io.grpc.Metadata$Key.of(Metadata.java:590)
at io.grpc.internal.GrpcUtil.<clinit>(GrpcUtil.java:84)
at io.grpc.internal.AbstractManagedChannelImplBuilder.<clinit>(AbstractManagedChannelImplBuilder.java:83)
at io.grpc.netty.NettyChannelProvider.builderForAddress(NettyChannelProvider.java:37)
at io.grpc.netty.NettyChannelProvider.builderForAddress(NettyChannelProvider.java:23)
at io.grpc.ManagedChannelBuilder.forAddress(ManagedChannelBuilder.java:37)
这里已经讨论过了,它说这已经不可能了。有人能告诉我这是可能的吗?还是我错过了什么?
使用Matlab Proto编译器[发声器]
接下来,我尝试使用Farsounder解决方案v2.5.0来创建基于此的存根文件。只有在创建protocol.exe之后,我才意识到它是为Proto V2准备的。所以,现在我正在尝试使用Protov3Matlab。
但是这里的构建说明不清楚,它有一个cmake文件,我不知道如何运行它。有人能帮我为windows环境构建这个吗?
我是Java和Matlab的新手,很抱歉我错过了任何明显的东西。
提前谢谢。
我能够创建protocol.exe。步骤:
- 查看了最新的protobuf源
- 用测深仪matlab源和cmake文件更新了源
- 关注https://github.com/protocolbuffers/protobuf/blob/master/cmake/README.md构建源代码