0

我正在尝试从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 中添加了这个路径,但是当我尝试调用该函数时,它告诉我在of 中javaclasspath没有具有此名称的类。javaclasspathMatlab

编辑: 这是 Matlab 使用的 java 版本:

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

这是我用来编译我的类的 jdk 版本: 在此处输入图像描述

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

>> javaaddpath 'C:\scriptsMatlab'
>> obj = TestFunction

它告诉我:

Undefined function or variable 'TestFunction'.
4

1 回答 1

0

选项1

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

    version -java
    
  2. 使用与上面相同的 jdk编译您​​的MyFunction.java,并找到您的MyFunction.class

  3. 找到您的 Matlab 类路径.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, '')
    

选项 2

按照步骤 1-2。

在 Matlab 中执行以下命令

JAVAADDPATH PATH/to/Directoryof MyFunction.class.

此处无需重启 Matlab。只需运行

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

来自 MathWorks:

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

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

于 2016-05-02T20:58:04.397 回答