【发布时间】:2012-03-01 00:45:00
【问题描述】:
我一直在尝试编辑以下 matlabcontrol 代码,但运行时仍然出现错误。请朋友们帮帮我!
package matcontro;
import matlabcontrol.*;
public class HelloWorld
{
public static void main(String[] args) throws MatlabConnectionException, MatlabInvocationException
{
// create proxy
MatlabProxyFactoryOptions options = new MatlabProxyFactoryOptions.Builder()
.setUsePreviouslyControlledSession(true)
.build();
MatlabProxyFactory factory = new MatlabProxyFactory(options);
MatlabProxy proxy = factory.getProxy();
// call builtin function
proxy.eval("disp('hello world')");
// call user-defined function (must be on the path)
proxy.eval("addpath('C:\\ Users\\HASENDE\\My Documents\\MATLAB')");
proxy.feval("myfunc");
proxy.eval("rmpath('C:\\ Users\\HASENDE\\My Documents\\MATLAB')");
// close connection
proxy.disconnect();
}
}
我得到的错误如下;
运行:
线程“主”matlabcontrol.MatlabConnectionException 中的异常: 无法启动 MATLAB。命令:[matlab, -r, javaaddpath 'C:\Users\HASENDE\Documents\NetBeansProjects\Java 类路径 库\matlabcontrol-4.0.0.jar'; matlabcontrol.MatlabClassLoaderHelper.configureClassLoading(); javarmpath 'C:\Users\HASENDE\Documents\NetBeansProjects\Java 类路径 库\matlabcontrol-4.0.0.jar'; matlabcontrol.MatlabConnector.connectFromMatlab('PROXY_RECEIVER_01caa56d-9ed7-4e39-a45b-345051024d49', 2100);]
在 matlabcontrol.RemoteMatlabProxyFactory.createProcess(RemoteMatlabProxyFactory.java:305) 在 matlabcontrol.RemoteMatlabProxyFactory.requestProxy(RemoteMatlabProxyFactory.java:116)
在 matlabcontrol.RemoteMatlabProxyFactory.getProxy(RemoteMatlabProxyFactory.java:134)
at matlabcontrol.MatlabProxyFactory.getProxy(MatlabProxyFactory.java:81) at matcontro.HelloWorld.main(HelloWorld.java:21)原因:java.io.IOException: Cannot run program "matlab": CreateProcess error=2, The system cannot find the file specified at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) 在 matlabcontrol.RemoteMatlabProxyFactory.createProcess(RemoteMatlabProxyFactory.java:292) ... 4 更多
原因:java.io.IOException: CreateProcess error=2, 系统 找不到指定的文件
at java.lang.ProcessImpl.create(Native Method) at java.lang.ProcessImpl.<init>(ProcessImpl.java:188) at java.lang.ProcessImpl.start(ProcessImpl.java:132) at java.lang.ProcessBuilder.start(ProcessBuilder.java:1021) ... 5 moreJava 结果:1
构建成功(总时间:4 秒)
【问题讨论】:
-
matlab是否已安装并在您的 PATH 中? -
是的,我已经在同一台计算机上安装了 matlab。我的函数位于上面定义的确切路径上,但是“你的路径”是什么意思? @madth3
-
嗯,在我看来,java 正在尝试调用 Matlab 程序但没有找到它。虽然我看到您正在创建的 MatlabProxy 应该连接到已经启动的 Matlab 实例,所以我不确定是否需要 Matlab 的位置。