从matlab脚本调用java函数

时间:2016-05-02 18:20:35

标签: java matlab training-data nntool

我正在尝试从Matlab脚本调用java函数,我尝试了网站上的所有解决方案,但我没有遇到问题。 我的课很简单:

  package testMatlabInterface;

public class TestFunction
{
  private double value;

  public TestFunction()
  {
      value=0;
  }

  public double Add(double v)
  {
      value += v;
      return value;
  }

  public static void main(String args[])
  {

  }
}

所以我将.java文件(也是.class)放在我的工作空间C:\scriptsMatlab中,并将此路径添加到Matlab的javaclasspath,但是当我尝试调用该函数时,它告诉我javaclasspath Matlab中没有此名称的类。

修改 这是Matlab使用的java版本:

Java 1.6.0_17-b04 with Sun Microsystems Inc. Java HotSpot(TM) Client VM mixed mode

这是我用来编译我的类的jdk上的版本: enter image description here

但是当我尝试从matlab执行这个命令时

>> javaaddpath 'C:\scriptsMatlab'
>> obj = TestFunction
它告诉我:

Undefined function or variable 'TestFunction'.

1 个答案:

答案 0 :(得分:0)

选项1

  1. 检查是否使用相同的JRE / JDK编译JAVA文件。在Matlab上执行:

    version -java
    
  2. 使用相同的jdk MyFunction.java 进行比较,然后找到 MyFunction.class

  3. 找到您的Matlab classpath.txt。在matlab cmd中输入以下内容。

    which classpath.txt
    
  4. 以管理员身份打开classpath.txt。使用 MyFunction.class 将目录的完整路径添加到“classpath.txt”的末尾将文件作为一行存档并保存文件。

  5. 重启Matlab。

  6. 在Matlab中运行。创建MyFunction的对象。

    obj = MyFunction
    

    在matlab中运行main()方法。

    javaMethod('main', obj, '')
    
  7. 选项2

    按照步骤1-2。

    在Matlab中执行以下命令

    JAVAADDPATH PATH/to/Directoryof MyFunction.class

    这里不需要重启Matlab。 只需使用

    运行
    obj = MyFunction;
    javaMethod('main', obj);
    

    来自MathWorks:

      

    javaMethod(MethodName,JavaObj,x1,...,xN)调用Java®对象数组的类中的方法,其签名与参数x1,...,xN匹配。

         

    javaMethod(StaticMethodName,ClassName,x1,...,xN)调用类ClassName中的静态方法。