2012-05-03 3 views
1

Matlab에서 Java protobuf 스텁을 사용하려고합니다. 이클립스에서 자바 스텁과 해당 jar 파일을 생성했다. jar 파일을 가져 와서 Matlab 경로에 추가합니다. 이 시점에서Matlab에서 프로토콜 버퍼 Java 바인딩 사용

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

I라는 오류 메시지가 얻을 : 내가 성공적으로 동일한을 사용하여 Java 프로젝트에서 자바 항아리를 사용 할 수있게되었습니다

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

을 matlab에 나는 다음을 수행 통사론. 그래서 내 스텁이 맞는지 확인합니다. 또한 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