我正在尝试从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
但是当我尝试从matlab执行这个命令时
>> javaaddpath 'C:\scriptsMatlab'
>> obj = TestFunction
它告诉我:
Undefined function or variable 'TestFunction'.
答案 0 :(得分:0)
选项1
检查是否使用相同的JRE / JDK编译JAVA文件。在Matlab上执行:
version -java
使用相同的jdk 与 MyFunction.java 进行比较,然后找到 MyFunction.class
找到您的Matlab classpath.txt。在matlab cmd中输入以下内容。
which classpath.txt
以管理员身份打开classpath.txt。使用 MyFunction.class 将目录的完整路径添加到“classpath.txt”的末尾将文件作为一行存档并保存文件。
重启Matlab。
在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)调用Java®对象数组的类中的方法,其签名与参数x1,...,xN匹配。
javaMethod(StaticMethodName,ClassName,x1,...,xN)调用类ClassName中的静态方法。