Passing javaArray to java method, error: No method 'getArray' with matching signature found for class

1 回表示 (過去 30 日間)
On Matlab Part:
Test = Test_abc; % Refer to Class Test_abc
data = javaArray('java.lang.Float',2,3);
for i=1:2
for j = 1:3
data(i,j)=java.lang.Float(i+j);
end
end
list_index = 2; % another int number to be passed to java method
Test.getArray(list_index-1, data);
On Java Part:
public class Test_abc{
...
public void getArray(int number, float[][] Mat_data)
{
System.out.println("Java accepts the value" + Mat_data[0][0] + ".");
System.out.println("Java accepts the value" + Mat_data[1][1] + ".");
}
...
}
Then the error
No method 'getArray' with matching signature found for class Test_abc
would pop up. What's strange is that if one normal matlab matrix element is passed, like " Test.getArray(list_index-1, X(1,1)); ", where X = [1,2; 3,4], there's no problem. I'm most sure that the problem lies in the conversation:
Test.getArray(list_index-1, data);
public void getArray(int number, float[][] Mat_data);
Why can't I pass a javaArray from matlab to java? Thank you!

採用された回答

Malcolm Lidierth
Malcolm Lidierth 2012 年 10 月 23 日
編集済み: Malcolm Lidierth 2012 年 10 月 23 日
float (with no capital letter) is a primitive data type in Java
Float (with capital) is a 'boxed' primitive - a true Java object.
You are passing a Float array to getArray but specifying float in the method's signature.
For float, just use a MATLAB 'single' array.
  1 件のコメント
Pengfei
Pengfei 2012 年 10 月 23 日
Thank you soooooooo much, my life saver!!! I've spent the whole day struggling with it, as a Java beginner.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeCall Java from MATLAB についてさらに検索

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by