在Matlab中使用协议缓冲区Java绑定

时间:2012-05-03 23:11:14

标签: java matlab protocol-buffers

我正在尝试在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存根文件,因为它很长。我希望有人可以用我提供的代码指出我做错了什么。如果需要,我将添加存根源。

提前致谢!

1 个答案:

答案 0 :(得分:1)

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

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

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