我试图将自定义Java类导入到matlab中。我找到了SO Question我跟随的。
我有以下Java代码
package mypackage.release;
public class TestArgu {
public void addNumber(int aNumber){
ansNumber = aNumber+5;
chk = aNumber;
System.out.println("input number = " + chk + ".\n");
System.out.println("ans = " + ansNumber + ".\n");
}
public int ansChk(){
return ansNumber;
}
private int ansNumber;
private int chk;
}
然后我用
编译javac TestArgu.java
我确保添加包含TestArgu.class
和javaaddpath('.')
文件的文件夹,并尝试使用matlab调用它。
>> a = mypackage.release.TestArgu();
Undefined variable "mypackage" or class "mypackage.release.TestArgu".
>> import mypackage.release.*;
>> a = TestArgu();
Undefined function or variable 'TestArgu'.
>> a = mypackage.release.TestArgu.addNumber(1);
Undefined variable "mypackage" or class "mypackage.release.TestArgu.addNumber".
我使用相同版本的java来编译matlab使用的。 (JDK 7,Matlab 2013b)
我哪里错了?
答案 0 :(得分:3)
我能够使用上面的代码重现相同的行为。我认为一个问题是该类没有构造函数,因此a=TestArgu()
将失败。我建议做以下事情。通过删除package my package.release
语句并添加构造函数来获取
public class TestArgu {
public TestArgu()
{
ansNumber = 0;
chk = 0;
}
public void addNumber(int aNumber){
ansNumber = aNumber+5;
chk = aNumber;
System.out.println("input number = " + chk + ".\n");
System.out.println("ans = " + ansNumber + ".\n");
}
public int ansChk(){
return ansNumber;
}
private int ansNumber;
private int chk;
}
编译代码,如前所述
$ javac TestArgu.java
然后在MATLAB中,将路径添加到此编译类所在的位置
>> javaaddpath('/Users/geoff/Development/java'); % or wherever
然后实例化对象
>> a = TestArgu
a =
TestArgu@2a307bb2
尝试方法
>> a.addNumber(37)
input number = 37.
ans = 42.