无法将我的java类导入Matlab

时间:2014-06-03 16:39:58

标签: java matlab

我试图将自定义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.classjavaaddpath('.')文件的文件夹,并尝试使用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)

我哪里错了?

1 个答案:

答案 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.