Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Matlab中使用协议缓冲区Java绑定_Java_Matlab_Protocol Buffers - Fatal编程技术网

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

在Matlab中使用协议缓冲区Java绑定,java,matlab,protocol-buffers,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.newB

我试图在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项目中使用了JavaJAR。因此,这验证了我的存根是正确的。我还成功地在我的Matlab项目中导入并使用了不同的Java库zmq.jar,因此在一定程度上验证了我知道如何正确地将jar文件导入Matlab

我没有附加生成的Java存根文件,因为它很长。我希望有人能指出我所提供的代码的错误之处。如果需要,我将添加存根源


提前谢谢

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

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

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

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

inmem是否显示加载了
图像
类?因此,在导入之后,我立即运行了disp(inmem)并获得以下信息:“workspacefunc”“pub”。Pub是我给类指定的变量名。因此,考虑到原始错误消息,加载它是没有意义的。我的问题是,我不知道它为什么不加载它;看起来您必须指定jar的完整文件名。jar文件(在我的例子中是proto.jar)已添加到Matlab classpath.txt文件中。我甚至尝试通过“import proto.raven.aos.Messages.*”导入,但仍然会出现同样的错误。我认为这个路径是正确的,因为当我将Messages construtor从private更改为public时,我可以创建一个Messages实例。问题是Matlab无法在消息中找到作为嵌套类的Image类。
inmem
是否显示加载了
Image
类?因此,在导入之后,我立即运行disp(inmem),并得到以下结果:“workspacefunc”“pub”。Pub是我给类指定的变量名。因此,考虑到原始错误消息,加载它是没有意义的。我的问题是,我不知道它为什么不加载它;看起来您必须指定jar的完整文件名。jar文件(在我的例子中是proto.jar)已添加到Matlab classpath.txt文件中。我甚至尝试通过“import proto.raven.aos.Messages.*”导入,但仍然会出现同样的错误。我认为这个路径是正确的,因为当我将Messages construtor从private更改为public时,我可以创建一个Messages实例。问题是Matlab找不到图像类,它是消息中的嵌套类。