2012-05-03 9 views
1

Matlab内でJavaのprotobufスタブを使用しようとしています。 EclipseでJavaスタブと対応するjarファイルを生成しました。私はjarファイルをとり、それをMatlabパスに追加します。 MATLABで、私は次のようにします。MatlabのプロトコルバッファJavaバインディングの使用

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

私が正常に正確に同じを使用してJavaプロジェクトでJavaのjarファイルを使用することができた。この時点で

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

私はというエラーメッセージが表示されます構文。これにより、私のスタブが正しいことが検証されます。私はMatlabプロジェクトで別のJavaライブラリzmq.jarを正常にインポートして使用しました。これにより、jarファイルをMatlabに正しくインポートする方法をある程度知ることができます。

非常に長いため、私は生成されたJavaスタブファイルを添付することを控えました。誰かが私が提供したコードだけで間違っていることを指摘できることを願っています。必要に応じて、スタブソースを追加します。

ありがとうございます!

+0

は 'inmem'は' Image'クラスがロードされて表示されていますか? – Torious

+0

インポートの直後に私はdisp(inmem)を実行しました。次のものがあります。 'workspacefunc' 'pub'。 Pubは私のクラスに与えた変数名です。そのため、元のエラーメッセージを考慮して読み込みません。私の問題は、なぜそれがロードされていないのか分からないということです。 –

+0

[このリンク](http://www.mathworks.nl/help/techdoc/matlab_external/f4863.html)のセクション、**利用可能なJARファイルでのクラスの作成、 jarの完全なファイル名を指定する必要があるように見えます。 – Torious

答えて

1

生成されたプロトコルバッファメッセージクラスは内部クラスなので、静的メソッドに到達するにはMatlabのjavaMethodコマンドを使用する必要があります。インポートステートメントは機能しません。あなたの例を使用する:

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

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

関連する問題