1

我正在尝试在 Matlab 中使用 Java protobuf 存根。我在 Eclipse 中生成了 Java 存根和相应的 jar 文件。然后我将 jar 文件添加到 Matlab 路径中。在 Matlab 中,我执行以下操作:

import raven.aos.*; 
import raven.aos.Messages.*;
image = Image.newBuilder();

此时我收到一条错误消息,内容为:

??? Undefined variable "Image" or class "Image.newBuilder".
Error in ==> pub>pub.pub at 16
image = Image.newBuilder();

我已经成功地能够使用完全相同的语法在 Java 项目中使用 Java jar。所以这验证了我的存根是正确的。我还在我的 Matlab 项目中成功导入并使用了不同的 Java 库 zmq.jar,因此在一定程度上验证了我知道如何将 jar 文件正确导入 Matlab。

我没有附加生成的 Java 存根文件,因为它很长。我希望有人可以仅使用我提供的代码指出我做错了什么。如果需要,我将添加存根源。

提前致谢!

4

1 回答 1

1

因为生成的协议缓冲区消息类是内部类,所以需要使用 Matlab 的 javaMethod 命令来获取静态方法。导入语句将不起作用。使用您的示例:

image = javaMethod('newBuilder','raven.aos.Messages$Image');

http://www.mathworks.com/help/techdoc/ref/javamethod.html

于 2012-08-31T06:05:49.420 回答