我們已將 DataAccess 邏輯移至微服務,目前它使用 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]
接下來我嘗試使用Farsounder解決方案 v2.5.0 基于此創建存根檔案。只有在創建 protoc.exe 之后,我才意識到它是針對 Proto V2 的。所以,現在我正在嘗試使用Protov3Matlab。
但是這里的構建說明不清楚,它有一個 cmake 檔案,我不知道如何運行它。任何人都可以幫我為 Windows 環境構建這個嗎?
我是 Java 和 Matlab 的新手,如果我遺漏了任何明顯的東西,我很抱歉。
提前致謝。
uj5u.com熱心網友回復:
我能夠創建 protoc.exe。腳步:
- 檢查了最新的 protobuf 源。
- 使用 farsounder matlab 源和 cmake 檔案更新了源。
- 按照https://github.com/protocolbuffers/protobuf/blob/master/cmake/README.md構建源代碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/410400.html
標籤:
上一篇:Matlab中如何分解方程?
下一篇:在列值中使用分隔符讀取CSV
